我在这里做错了什么:在IE9和FF中也有相同的结果.
function TestArrayOperationsClick() { function sortNums(a,b) { return a - b; } var array = [6,4,2,8]; console.log("Array 1: " + array); array.sort(sortNums); console.log("Sort 1: " + array); array.push([1,5,10]); console.log("Array 2: " + array); array.sort(sortNums); console.log("Sort 2: " + array); }
输出:
LOG: Array 1: 6,8 LOG: Sort 1: 2,6,8 LOG: Array 2: 2,8,1,10 LOG: Sort 2: 2,10 <- not sorted.
解决方法
对于
array.push(...)
,您应该传递单个参数,而不是数组:
array.push(1,10);
最终输出将是:
Sort 2: 1,10
否则,推送的结果实际上是这样的:
[2,[1,10]]
虽然在执行console.log时没有清楚地显示.
编辑:正如乔纳森所提到的,如果你想要追加一系列物品,.concat()
就是你要走的路.