我不明白.splice()为什么在这里返回一个空数组



非常感谢您的反馈。我读了MDN,但还是不明白。谢谢

function frankenSplice(arr1, arr2, n) {
return arr2.splice(n,0,arr1);
}
console.log(frankenSplice([1, 2, 3], [4, 5, 6], 1));

如上所述,拼接通常用于添加单个元素。但是,没有什么可以阻止它使用数组并将这些数组作为元素添加到其他数组中。返回空数组的原因是它返回的是已删除元素的数组,而不是新数组。

如果您想返回更新的数组,请执行

function frankenSplice(arr1, arr2, n) {
arr2.splice(n,0,arr1);
return arr2;
}

splice用于将奇异元素连接到数组。

如果要组合数组,请首先将元素拼接到一个数组:

var arr1 = [1,2,3,4]; // elements could be anything, I am just using integers here.
arr1.splice(n,0,element);

如果要组合两个数组,请使用concat。

var arr1 = [1,2,3,4];
var arr2 = [5,6,7,8];
var result = arr1.concat(arr2);

您所问的问题可能不是您想要回答的问题,而是来自MDN:

返回值包含已删除元素的数组。如果只有一个元素,则返回一个元素的数组。如果没有元素,则返回一个空数组。

您期望函数返回拼接的数组,为此您需要:

function frankenSplice(arr1, arr2, n) {
arr2.splice(n,0,arr1);
return arr2;
}

然而,我怀疑@jshamble是对的,并且您实际上并不想使用.splice((.

拼接不等于结果,它直接将结果写回变量。因此,您不必返回arr2.splice(n, 0, arr1);arr2.splice(n, 0, arr1); return arr2

最新更新