簡體   English   中英

如何將項目添加到數組的中間?

[英]How do I add an item to the middle of an array?

 function reverse(array,item){ let word = Math.ceil(array.length/2) return array.splice(word,0,item) } console.log(reverse([1,2,4,5,6],3))

我想知道為什么我在調用函數時得到一個空數組,而不是 [1,2,3,4,5,6]?

Array#splice返回第二個參數計數的項目,即被刪除的項目。

要返回數組,您需要返回 then 數組而不是拼接的項目。

 function reverse(array, item) { let word = Math.ceil(array.length / 2); array.splice(word, 0, item); return array; } console.log(reverse([1, 2, 4, 5, 6], 3));

splice不返回新數組,而是修改輸入數組。 你需要明確返回

 function reverse(array,item){ let word = Math.ceil(array.length/2) array.splice(word,0,item) return array } console.log(reverse([1,2,4,5,6],3))

array.splice(...)不返回新數組,它修改輸入數組。 每個MDN ,它的返回值是:

包含已刪除元素的數組。 如果只刪除一個元素,則返回一個包含一個元素的數組。 如果沒有刪除任何元素,則返回一個空數組。

如果您打算創建一個插入而不修改原始數組的函數,這里有一個很好的例子: https : //stackoverflow.com/a/38181008/1266600

splice()更改原始數組,而slice()不會。

如果您不想更改原始數組,請使用 slice。

 function reverse(array,item){ let word = Math.ceil(array.length/2) return [].concat(array.slice(0,word - 1), item, array.slice(word - 1)); } console.log(reverse([1,2,4,5,6],3))

暫無
暫無

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

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