簡體   English   中英

推送后Javascript排序不起作用?

[英]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()就是你要走的路。

.push()不會像以下那樣組合Array

array.push([1, 5, 10]);

它不是推送單個值,而是推送第二個Array本身,導致:

[ 2, 4, 6, 8, [ 1, 5, 10 ] ]

要將一個Array附加到另一個Array ,可以使用.concat()

array = array.concat([1, 5, 10]);

如上所述,對於array.push您應該傳遞單個參數,例如:

array.push(1, 5, 10);

但是您可以執行以下操作將數組的內容添加到另一個數組中:

Array.prototype.push.apply(array, [1, 5, 10]);

這樣,您可以將數組作為參數傳遞,因為apply()函數將第二個參數(必須是數組)轉換為單個參數;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM