w javascript, jeśli mam tablicę tablic, jak poniżej:użyciu JavaScript, aby posortować tablicę tablic numerycznych
X = [ [1,2,3,4],
[1,1,2,3],
[1,1,3],
[1,4],
[2,1,2],
[2,2]
]
JavaScript sortuje moją tablicę, porównując pierwszy wpis, potem drugi, i tak dalej tak, że X.sort()
zwraca następujący:
[ [1,1,2,3],
[1,1,3],
[1,2,3,4],
[1,4],
[2,1,2],
[2,2]
]
co jest, co chcę. Problem polega na tym, że operator porównania do porównywania elementów w macierzy jest leksykograficzny, więc [10,2] < [2,2]
, i, na przykład,
[[10,2],[1,1,3],[2,2]].sort() -> [[1,1,3],[10,2],[2,2]]
muszę go rozwiązać numerycznie, tak aby uzyskać posortowaną tablicę [[1,1,3],[2,2],[10,2]]
.
Próbowałem przy użyciu funkcji porównawczej function(a,b){return (a-b) }
, która będzie działać do sortowania tablicę liczb, ale to nie działa prawidłowo sortować tablicę, która ma sens (chyba) ponieważ [10,2] - [1,1,3]
plony NaN
Jak to zrobić posortować tablicę tablic numerycznych?
Jeśli zmienisz funkcję porównywania, aby uwzględnić fakt, że podane argumenty są tablicami, powinna działać. http://jsfiddle.net/SYHr2/ – Rikonator
@Rikonator Świetne rozwiązanie, możesz napisać to jako odpowiedź, wydaje się działać – Ian
@Rikonator Fantastyczne! Daje mi możliwości sortowania, których potrzebuję, z wąską funkcją, która nie zastępuje naturalnej metody .sort. Jeśli napiszesz to jako odpowiedź, zaakceptuję to. – ckersch