[英]Javascript sort doesn't work after push?
我在這里做錯了什么:在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,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.
對於array.push(...)
,您應該傳遞單個參數,而不是數組:
array.push(1, 5, 10);
最終輸出將是:
Sort 2: 1,2,4,5,6,8,10
否則,推送的結果實際上是這樣的:
[2,4,6,8,[1,5,10]]
雖然在執行console.log
時沒有清楚地顯示。
編輯 :正如Jonathan所提到的,如果你想要追加一系列項目, .concat()
就是你要走的路。
如上所述,對於array.push
您應該傳遞單個參數,例如:
array.push(1, 5, 10);
但是您可以執行以下操作將數組的內容添加到另一個數組中:
Array.prototype.push.apply(array, [1, 5, 10]);
這樣,您可以將數組作為參數傳遞,因為apply()
函數將第二個參數(必須是數組)轉換為單個參數;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.