繁体   English   中英

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

[英]I do not understand why .splice() is returning an empty array here

希望能得到一些反馈。 我读了MDN,但仍然听不懂。 谢谢

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

console.log(frankenSplice([1, 2, 3], [4, 5, 6], 1));

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

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

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

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

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

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

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

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

但是,我怀疑@jshamble是正确的,您实际上并没有在使用.splice()。

Splice不会“等于”结果,而是将其直接写回变量。 因此,而不是返回arr2.splice(n, 0, arr1); 您必须编写arr2.splice(n, 0, arr1); return arr2 arr2.splice(n, 0, arr1); return arr2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM