在Javascript中的数组,如果我有一个数组的数组,如下所示:使用JavaScript来排序数字数组
X = [ [1,2,3,4],
[1,1,2,3],
[1,1,3],
[1,4],
[2,1,2],
[2,2]
]
的Javascript排序我的阵列,首先比较第一个条目,然后第二个,依此类推,以便X.sort()
返回以下内容:
[ [1,1,2,3],
[1,1,3],
[1,2,3,4],
[1,4],
[2,1,2],
[2,2]
]
这就是我想要的。的问题是,在阵列比较元件比较操作符是辞书,所以[10,2] < [2,2]
,和,例如,
[[10,2],[1,1,3],[2,2]].sort() -> [[1,1,3],[10,2],[2,2]]
我需要它数字排序,使得我得到的[[1,1,3],[2,2],[10,2]]
排序后的数组。
我尝试使用的function(a,b){return (a-b) }
比较功能,这将排序数字数组的工作,但是这未能正确排序我的阵列,这是有道理的(我认为),因为[10,2] - [1,1,3]
产量NaN
我如何去排序数组数组?
如果您更改比较函数以说明传递参数是数组的事实,它应该可以工作。 http://jsfiddle.net/SYHr2/ – Rikonator
@Rikonator伟大的解决方案,你可能想张贴作为答案,它似乎工作 – Ian
@Rikonator太棒了!使用不会覆盖自然的.sort方法的超薄功能,为我提供所需的排序功能。如果你把它写成答案,我会接受它。 – ckersch