Trong javascript, nếu tôi có một mảng của mảng, giống như sau:Sử dụng Javascript để sắp xếp một mảng của mảng số
X = [ [1,2,3,4],
[1,1,2,3],
[1,1,3],
[1,4],
[2,1,2],
[2,2]
]
Javascript sắp xếp mảng của tôi, so sánh mục đầu tiên đầu tiên, sau đó thứ hai, và vân vân , để X.sort()
trả về các mục sau:
[ [1,1,2,3],
[1,1,3],
[1,2,3,4],
[1,4],
[2,1,2],
[2,2]
]
Tôi muốn gì. Vấn đề là các toán tử so sánh để so sánh các yếu tố trong mảng là hoặc null, vì vậy [10,2] < [2,2]
, và, ví dụ,
[[10,2],[1,1,3],[2,2]].sort() -> [[1,1,3],[10,2],[2,2]]
tôi cần nó để sắp xếp số lượng, vì vậy mà tôi có được một mảng được sắp xếp của [[1,1,3],[2,2],[10,2]]
.
tôi đã cố gắng sử dụng một hàm so sánh function(a,b){return (a-b) }
, mà sẽ làm việc để phân loại một loạt các con số, nhưng điều này không đúng loại mảng của tôi, có ý nghĩa (tôi nghĩ) vì [10,2] - [1,1,3]
sản lượng NaN
Làm thế nào để đi về sắp xếp một mảng của mảng số?
Nếu bạn thay đổi hàm so sánh để tính toán thực tế là các đối số được truyền là các mảng, nó sẽ hoạt động. http://jsfiddle.net/SYHr2/ – Rikonator
@Rikonator Giải pháp tuyệt vời, bạn có thể muốn đăng câu trả lời đó, có vẻ như hoạt động – Ian
@Rikonator Fantastic! Cung cấp cho tôi khả năng phân loại tôi cần với một chức năng mỏng không ghi đè lên phương pháp .sort tự nhiên. Nếu bạn viết nó như là một câu trả lời tôi sẽ chấp nhận nó. – ckersch