In Javascript zu sortieren, wenn ich ein Array von Arrays habe, wie die folgenden:mit JavaScript eine Reihe von numerischer Arrays
X = [ [1,2,3,4],
[1,1,2,3],
[1,1,3],
[1,4],
[2,1,2],
[2,2]
]
Javascript meine Array sortiert, zuerst ersten Eintrag vergleicht, dann die zweiten und so weiter , so dass X.sort()
gibt folgendes zurück:
[ [1,1,2,3],
[1,1,3],
[1,2,3,4],
[1,4],
[2,1,2],
[2,2]
]
das ist, was ich will. Das Problem ist, dass der Vergleichsoperator die Elemente in der Arrays für den Vergleich ist lexikographischer, so [10,2] < [2,2]
, und zum Beispiel
[[10,2],[1,1,3],[2,2]].sort() -> [[1,1,3],[10,2],[2,2]]
Ich brauche es numerisch zu sortieren, so dass ich eine sortierte Reihe von [[1,1,3],[2,2],[10,2]]
bekommen.
Ich habe versucht, eine Vergleichsfunktion von function(a,b){return (a-b) }
verwenden, die für das Sortieren einer Reihe von Zahlen funktionieren würde, aber dies nicht gelingt meiner Array richtig zu sortieren, was Sinn macht (glaube ich), weil [10,2] - [1,1,3]
Ausbeuten NaN
Wie ich tun über das Sortieren eines Arrays von numerischen Arrays gehen?
Wenn Sie die Vergleichsfunktion ändern, um zu berücksichtigen, dass die übergebenen Argumente Arrays sind, sollte es funktionieren. http://jsfiddle.net/SYHr2/ – Rikonator
@ Rikonator Große Lösung, möchten Sie vielleicht als Antwort zu posten, scheint es zu arbeiten – Ian
@Rikonator Fantastisch! Gibt mir die Sortierfähigkeit, die ich brauche, mit einer schlanken Funktion, die die natürliche .sort-Methode nicht überschreibt. Wenn Sie es als Antwort aufschreiben, akzeptiere ich es. – ckersch