[英]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.