2016-10-05 1 views
0

Ich habe folgendes Objekt:JQuery-Objekt durch seine Schlüsselwert Sortierung

Object {by: "abritishguy", descendants: 38, id: 12617659, kids: Array[8], score: 133…} 
Object {by: "mcgwiz", descendants: 4, id: 12641662, kids: Array[1], score: 8…} 
Object {by: "dnetesn", descendants: 19, id: 12617263, kids: Array[5], score: 73…} 
Object {by: "samber", descendants: 12, id: 12631162, kids: Array[6], score: 127…} 
Object {by: "seanseanme", descendants: 0, id: 12632377, score: 16, time: 1475539307…} 
Object {by: "wolframio", descendants: 3, id: 12631876, kids: Array[3], score: 25…} 
Object {by: "paloaltokid", descendants: 22, id: 12620209, kids: Array[19], score: 11…} 
Object {by: "vfulco", descendants: 1, id: 12620860, kids: Array[2], score: 7…} 
Object {by: "forgingahead", descendants: 0, id: 12641351, score: 8, time: 1475638119…} 
Object {by: "aylmao", descendants: 0, id: 12630489, score: 4, time: 1475522605…} 

ich durch das oben genannte Ziel sortieren müssen „Score“

Bisher habe ich versucht, dieses:

$.getJSON('data.json', function (idata) { 
    itemDataArray.push(idata); 

}); 


$(itemDataArray).sort(function (a, b) { 
    var attr = {}; // your comparison attribute here 
    attr.a = parseInt(a.data('score') || 0); 
    attr.b = parseInt(b.data('score') || 0); 
    return attr.a < attr.b ? -1 : attr.a > attr.b ? 1 : 0; 
}); 

es funktioniert nicht, bitte helfen

+0

nicht wickeln Sie '' itemDataArray in einem jQuery-Objekt. Verwenden Sie native 'sort'. –

+0

Sie können auch lodash verwenden, es ist wirklich hilfreich in einem Projekt https://lodash.com/docs/4.16.2#orderBy –

+0

jQuery ist vor allem für DOM-Operationen. Verwenden Sie einfach die Muttersprache, es sei denn, Sie erstellen tatsächlich ein jQuery-Objekt mit Elementen. Diese '.sort' wird jedoch vor dem Eintreffen der '$ .getJSON' Antwort passieren. –

Antwort

1

Sie können Array#sort direkt verwenden.

In diesem Fall wird wegen des Operators - ein möglicher String-Wert implizit in Zahl umgewandelt.

Aufsteigend:

itemDataArray.sort(function (a, b) { 
    return a.score - b.score; 
}); 

absteigend:

itemDataArray.sort(function (a, b) { 
    return b.score - a.score; 
}); 
+0

funktioniert der Sortierbereich. wenn ich mit $ .each parse, funktioniert es nicht. weißt du, warum? –

+0

@ TanvirAlam, also ad hoc nicht. Bitte stelle eine neue Frage. –

+0

@TanvirAlam: Stellen Sie keine neue Frage, es sei denn, Sie sind bereit, ein vollständiges Beispiel zu geben. Diese Frage hätte niemals beantwortet werden sollen. Es gibt zu viele offene Fragen über die gesamte Situation. Diese einfache, offensichtliche Antwort kommt den Fragen und Möglichkeiten, die in der Frage präsentiert werden, nicht nahe. –

Verwandte Themen