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]吗?
答案 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)
答案 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))