如何将项目添加到数组的中间?

时间:2019-04-18 18:19:07

标签: javascript arrays

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]吗?

4 个答案:

答案 0 :(得分:4)

Array#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));

答案 1 :(得分:3)

splice不返回新数组,而是修改输入数组。您需要明确返回

SELECT DISTINCT

答案 2 :(得分:1)

array.splice(...)不返回新数组,而是修改输入数组。对于MDN,其返回值为:

  

包含删除的元素的数组。如果仅删除一个元素,则返回一个元素的数组。如果没有删除任何元素,则返回一个空数组。

如果您打算创建一个无需修改原始数组即可插入的函数,这是一个很好的示例:https://stackoverflow.com/a/38181008/1266600

答案 3 :(得分:0)

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))