2016-06-01 10 views
2

Ich habe ein Objekt, ich verwende ng-repeat, aber muss Artikel in sortierbaren Format anzeigen Sortierung sollte auf den Gesamtwert erfolgen, wenn der Gesamtwert für mehrere Artikel gleich ist als Sortierung sollte auf der Grundlage von p1-Wert getan werden, wenn p1 ist gleich p2 und wenn p2 ist auch gleich dann p3.i haben bereits Objekt basierend auf Gesamtwert sortiert, aber stecken in Priorität, wie auf basierend auf mehreren Objekteigenschaft zu sortieren?.Sortier JavaScript-Objekt basierend auf mehreren Eigenschaft basierend auf dort Priorität

i Sortierung auf getan haben, basierend auf Wert und Schlüssel, sondern Hilfe zu dieser komplexen Situation benötigt

{ "QVC":{ 
      "p1":0, 
      "p2":12, 
      "p3":12, 
      "total":24, 
      "org":"QVC" 
     }, 
     "TURNER & TOWNSEND":{ 
      "p1":12, 
      "p2":12, 
      "p3":0, 
      "total":24, 
      "org":"TURNER & TOWNSEND" 
     }, 
     "EDF ENERGY":{ 
      "p1":12, 
      "p2":0, 
      "p3":12, 
      "total":24, 
      "org":"EDF ENERGY" 
     }, 
     "TOWERS WATSON":{ 
      "p1":6, 
      "p2":0, 
      "p3":6, 
      "total":12, 
      "org":"TOWERS WATSON" 
     }, 
     "VODAFONE UK LTD":{ 
      "p1":0, 
      "p2":1, 
      "p3":0, 
      "total":1, 
      "org":"VODAFONE UK LTD" 
     }, 
     "DENPLAN LTD":{ 
      "p1":1, 
      "p2":0, 
      "p3":0, 
      "total":1, 
      "org":"DENPLAN LTD" 
     } 

    } 
+0

bitte einen Kommentar hinterlassen, wenn Sie abstimmen getan werden –

+0

so müssen Sie einen Array mit angewandter Art auf sie? –

+0

ja, das gleiche Array ich werde Iterieren –

Antwort

2

Sie können ein Array machen und dann sortieren sie mit Array#sort() und einen Rückruf mit der gewünschten Art Hierarchie.

var object = { "QVC": { "p1": 0, "p2": 12, "p3": 12, "total": 24, "org": "QVC" }, "TURNER & TOWNSEND": { "p1": 12, "p2": 12, "p3": 0, "total": 24, "org": "TURNER & TOWNSEND" }, "EDF ENERGY": { "p1": 12, "p2": 0, "p3": 12, "total": 24, "org": "EDF ENERGY" }, "TOWERS WATSON": { "p1": 6, "p2": 0, "p3": 6, "total": 12, "org": "TOWERS WATSON" }, "VODAFONE UK LTD": { "p1": 0, "p2": 1, "p3": 0, "total": 1, "org": "VODAFONE UK LTD" }, "DENPLAN LTD": { "p1": 1, "p2": 0, "p3": 0, "total": 1, "org": "DENPLAN LTD" } }, 
 
    array = Object.keys(object).map(function (k) { return object[k]; }); 
 

 
array.sort(function (a, b) { 
 
    return a.total - b.total || a.p1 - b.p1 || a.p2 - b.p2 || a.p3 - b.p3; 
 
}); 
 

 
console.log(array);

+1

Dies ist genau das gleiche, was ich will –

1

Sie können nicht Objekt sortieren, aber Sie können mit Object.keys() Array von Objektschlüssel erstellen und sortieren es

var obj = {"QVC":{"p1":0,"p2":12,"p3":12,"total":24,"org":"QVC"},"TURNER & TOWNSEND":{"p1":12,"p2":12,"p3":0,"total":24,"org":"TURNER & TOWNSEND"},"EDF ENERGY":{"p1":12,"p2":0,"p3":12,"total":24,"org":"EDF ENERGY"},"TOWERS WATSON":{"p1":6,"p2":0,"p3":6,"total":12,"org":"TOWERS WATSON"},"VODAFONE UK LTD":{"p1":0,"p2":1,"p3":0,"total":1,"org":"VODAFONE UK LTD"},"DENPLAN LTD":{"p1":1,"p2":0,"p3":0,"total":1,"org":"DENPLAN LTD"}} 
 

 
var sort = Object.keys(obj).sort(function(a, b) { 
 
    return obj[b].total - obj[a].total || obj[b].p1 - obj[a].p1 || obj[b].p2 - obj[a].p2 || obj[b].p3 - obj[a].p3; 
 
}) 
 

 
console.log(sort)

Dann können Sie verwenden, die sortierten Array von Schlüsseln Objektwerten zurück in sortiert bestellen

var obj = {"QVC":{"p1":0,"p2":12,"p3":12,"total":24,"org":"QVC"},"TURNER & TOWNSEND":{"p1":12,"p2":12,"p3":0,"total":24,"org":"TURNER & TOWNSEND"},"EDF ENERGY":{"p1":12,"p2":0,"p3":12,"total":24,"org":"EDF ENERGY"},"TOWERS WATSON":{"p1":6,"p2":0,"p3":6,"total":12,"org":"TOWERS WATSON"},"VODAFONE UK LTD":{"p1":0,"p2":1,"p3":0,"total":1,"org":"VODAFONE UK LTD"},"DENPLAN LTD":{"p1":1,"p2":0,"p3":0,"total":1,"org":"DENPLAN LTD"}} 
 

 
var sort = Object.keys(obj).sort(function(a, b) { 
 
    return obj[b].total - obj[a].total || obj[b].p1 - obj[a].p1 || obj[b].p2 - obj[a].p2 || obj[b].p3 - obj[a].p3; 
 
}) 
 

 
sort.forEach(function(e) {console.log(obj[e]) });

+0

Sie können versuchen, http://eloquentjavascript.net/ und https://developer.mozilla.org/en-US/docs/Web/JavaScript –

Verwandte Themen