2016-04-08 18 views
1

Ich habe ein einzelnes Array wie folgt aussehen:Sortierung Arrays innerhalb eines Arrays von einem Wert

var x = [[29,"Abc","9320","390"],[932,"123","9301","9032"], ...] 

Ich suche dieses Array zu sortieren, so dass es durch den ersten Wert jedes Arrays organisiert. In diesem Fall wäre das wie folgt aussehen:

[[932,"123","9301","9032"], [29,"Abc","9320","390"], ...] 

ich versucht habe .forEach zu verwenden, aber haben nicht gelungen, sie zum Laufen zu bringen. Kann jemand irgendwelche Vorschläge anbieten?

+1

ich die Sortierlogik nicht verstehen. – John

+0

Hallo @John - Ich möchte alle diese Arrays in der Reihenfolge ihres ersten Wertes drucken, so dass diejenigen mit dem größten Wert zuerst gedruckt werden. – GregW

Antwort

0

Der richtige Weg, mit Art zu tun, ist dies:

var sorted = x.sort(function(a, b) { 
    return a[0] - b[0]; 
}).reverse(); // the sort is in ascending order so we need to finally reverse the array to have your final array in descending order! 

oder noch besser:

var sorted = x.sort(function(a, b) { 
    return b[0] - a[0]; 
}) 

wenn Sie vergleichen die Werte eine < oder > mit nicht funktionieren immer:

Sorting in JavaScript: Shouldn't returning a boolean be enough for a comparison function?

jedoch Zahlen für die Verwendung von a '-' ist in Ordnung:

How to sort an array of integers correctly

+1

besser verwenden 'b [0]' in dort .... – trincot

+0

whoops ... Bearbeitung Danke! – JordanHendrix

+1

Und jetzt drehen Sie es um, um die absteigende Sortierreihenfolge zu erhalten. – trincot

1

Versuchen Sie folgendes:

var x = [[29,"Abc","9320","390"], [932,"123","9301","9032"]]; 

var sorted = x.sort(function(a, b) { 
    return b[0] - a[0]; 
}); 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

+0

Der Rückruf, der für die Sortiermethode bereitgestellt wird, sollte einen numerischen Wert zurückgeben, negativ, null oder positiv. Also wäre 'return b [0] - a [0]' passender. – trincot

+0

Sie sind richtig, danke. Antwort aktualisiert – scott113341

Verwandte Themen