[英]Why is .splice(1, 0, '.') returning an empty array? (Javascript)
[英]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.