Dea*_*ean 6 javascript sorting
我在这里做错了什么:在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);
}
Run Code Online (Sandbox Code Playgroud)
输出:
LOG: Array 1: 6,4,2,8
LOG: Sort 1: 2,4,6,8
LOG: Array 2: 2,4,6,8,1,5,10
LOG: Sort 2: 2,4,6,8,1,5,10 <- not sorted.
Run Code Online (Sandbox Code Playgroud)
Her*_*aaf 10
因为array.push(...),您应该传递单个参数,而不是数组:
array.push(1, 5, 10);
Run Code Online (Sandbox Code Playgroud)
最终输出将是:
Sort 2: 1,2,4,5,6,8,10
Run Code Online (Sandbox Code Playgroud)
否则,推送的结果实际上是这样的:
[2,4,6,8,[1,5,10]]
Run Code Online (Sandbox Code Playgroud)
虽然你做的时候没有清楚地表现出来console.log.
编辑:正如乔纳森所提到的,如果你想要追加一系列物品,那.concat()就是要走的路.
.push()没有结合Array如下似乎期望:
array.push([1, 5, 10]);
Run Code Online (Sandbox Code Playgroud)
它不是推动单个值,而是推动第二个Array本身,导致:
[ 2, 4, 6, 8, [ 1, 5, 10 ] ]
Run Code Online (Sandbox Code Playgroud)
要将一个附加Array到另一个上,您可以使用.concat():
array = array.concat([1, 5, 10]);
Run Code Online (Sandbox Code Playgroud)