Javascript array Sortieren nach mehreren Kriterien
Ich habe ein array von Objekten:
var arr = [
{title:'50 - 50'},
{title:'100 - 100'},
{title:'50 - 65'},
{title:'100 - 125'}
];
Versuche ich zu Sortieren das array so, dass die Elemente in der folgenden Reihenfolge angezeigt:
var arr = [
{title:'50 - 50'},
{title:'50 - 65'},
{title:'100 - 100'},
{title:'100 - 125'}
];
Derzeit bin ich mit folgenden Sortier-Funktion versucht:
arr.sort(function(a, b){
var titleA = a.title;
var titleB = b.title;
var arrA = titleA.split(' - ');
var arrB = titleB.split(' - ');
var keyA = parseInt(arrA[0]),
keyB = parseInt(arrB[0]);
//Compare the 2 keys
if(keyA < keyB) return -1;
if(keyA > keyB) return 1;
return 0;
});
Jedoch, diese gibt die Elemente in der folgenden Reihenfolge:
var arr = [
{title:'50 - 65'},
{title:'50 - 50'},
{title:'100 - 125'},
{title:'100 - 100'}
];
Es sieht aus wie ich brauche, um zu Sortieren, indem die erste Zahl in den Titel und dann die zweite Zahl. Irgendwelche Ideen?
verwenden Sie das Codebeispiel statt code-snippet, wenn Sie gemeinsam den code. verwenden Sie code-snippet, wenn Sie es läuft.
Sie Sortieren auf der ersten Reihe nur. Fügen Sie ein weiteres Kriterium für die zweite Nummer, wenn
Sie Sortieren auf der ersten Reihe nur. Fügen Sie ein weiteres Kriterium für die zweite Nummer, wenn
keyA == keyB
.InformationsquelleAutor user2866434 | 2015-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Nicht, vollständig zu verstehen, wie es funktioniert, aber sicher funktioniert. Den docs. Danke!
InformationsquelleAutor Alex Kopachov
In pseudocode, die Logik wäre die folgende:
Verfahren: Komparators(a,b)
a < b
dannreturn -1
a = b
dann rufen Siecomparator(a1, b1)
rekursiv, woa1
undb1
sind die vergleichbaren Werte der nächsten Ebene in der Sortierung.a > b
dannreturn 1
In Ihrem konkreten Fall können Sie tun, es einfach zu tun, indem Sie Ihre code ein wenig:
InformationsquelleAutor meskobalazs
Hier ist ein sauberer und kürzere version, die nicht erfordert eine Reihe von verschachtelten if/else-Fällen:
InformationsquelleAutor Leonid Pyrlia
Erstellen Sie eine compare-Funktion, die ähnlich dieser:
InformationsquelleAutor Mukesh Agarwal