2016-04-15 13 views
1

Wie Objekte von Objekten Asc und Desc mit Lodash zu sortieren?Lodash - Objekte in Objekt sortieren (desc und asc)

Zum Beispiel möchte ich es nach 'r' oder 'd' sortieren.

Dies ist, wie mein Objekt wie folgt aussieht:

enter image description here

+0

Meinen Sie, indem Sie Objekte auf verschiedene Schlüssel in einer sortierten Reihenfolge platzieren ..? Wenn ja, können Sie dies einfach durch reines JS tun. Eine Möglichkeit besteht darin, sie in ein Array zu verschieben und dort zu sortieren und dann in sortierter Reihenfolge zurück in das obj zu kopieren. Oder Sie fügen Ihrem Master-Objekt eine Längeneigenschaft mit einem Wert für die Gesamtzahl der Objektelemente hinzu und führen dann Array aus. prototype.sort.call (obj, callback) – Redu

+1

Laut der JavaScript-Spezifikation haben die Eigenschaften eines Objekts keine Reihenfolge. Es gibt keine "erste" oder "letzte" Eigenschaft; Sie können nicht sortiert werden. Unabhängig von der Reihenfolge, in der Sie sie zuweisen (oder in der Reihenfolge, in der sie in der Konsole angezeigt werden), ist es nicht garantiert, dass sie in einer bestimmten Reihenfolge zurückgegeben werden, wenn Sie sie aufzählen. Wenn Sie eine geordnete Datenstruktur benötigen, verwenden Sie ein Array. –

Antwort

1

Platz interne Objekte in der Anordnung und Verwendung Funktion sortBy()

var users = [ 
{ 'user': 'fred', 'age': 48 }, 
{ 'user': 'barney', 'age': 36 }, 
{ 'user': 'fred', 'age': 40 }, 
{ 'user': 'barney', 'age': 34 } 
]; 

_.sortBy(users, function(o) { return o.user; }); 
// → objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] 
console.log(users.reverse()); // desc order 
+0

Ich habe es so gemacht. Ich habe '_.sortBy (sortArray, Funktion (o) {return o.d;}); und es funktioniert nicht. Objekte werden immer noch wie beim Start sortiert. – snuuve

+0

@snuuve Zeigen Sie den Code bitte. – sphinks

0

reine JS ist auch sehr einfach und man kann so etwas tun ;

var obj = {a:16, b:2, c:8, d:4, e:1}, 
 
    okeys = Object.keys(obj), 
 
    sorted = {}; 
 
okeys.sort((p,c) => obj[p] <= obj[c]).forEach((p,i) => sorted[okeys[i]] = obj[p]); 
 
document.write('<pre> ' + JSON.stringify(sorted, 0, 2) + '</pre>');

Ich Sortierobjekteigenschaften entsprechend ihrer numerischen Werte. Ihre Werte könnten Objekte sein, und Sie könnten auch nach diesen Objekten Eigenschaftswerte sortieren. Aber ich kann nicht sagen, was ein vernünftiger Grund dafür sein könnte.

Verwandte Themen