尽管FreeCodeCamp不接受答案,但是代码似乎可以提供我想要的结果。显然,他们的代码看起来更好/更紧凑,除此之外,按照我的方式进行操作是否还会有其他缺点?也许是明智的表现?
简介/目标
为您提供了两个数组和一个索引。
使用数组方法slice和splice将第一个数组的每个元素依次复制到第二个数组中。
开始在第二个数组的索引n处插入元素。
返回结果数组。函数运行后,输入数组应保持不变。
我的代码
function frankenSplice(arr1, arr2, n) {
let arr3 = arr2.slice(0, n);
let arr4 = arr2.slice(n);
arr3.push(arr1);
arr3.push(arr4);
return arr3;
}
他们的解决方案
function frankenSplice(arr1, arr2, n) {
let localArray = arr2.slice();
for (let i = 0; i < arr1.length; i++) {
localArray.splice(n, 0, arr1[i]);
n++;
}
return localArray;
}
答案 0 :(得分:0)
在创建数组数组时,代码不被接受。这两个功能做不同的事情。如果要串联数组,则应使用Array.prototype.concat
而不是.push
方法:
function frankenSplice(arr1, arr2, n) {
let arr3 = arr2.slice(0, n);
let arr4 = arr2.slice(n);
return arr3.concat(arr1, arr4);
}
但是您的函数仍然不使用Array.prototype.splice
方法。一种选择是:
function frankenSplice(arr1, arr2, n) {
let ret = arr2.slice();
ret.splice(n, 0, ...arr1);
// or: [].splice.apply(ret, [n, 0].concat(arr1));
return ret;
}
上述功能的精简版:
function frankenSplice(a, b, n) {
[].splice.apply(b = b.slice(), [n, 0, ...a]);
return b;
}