Javascript 将1个数组的所有元素按顺序复制到第二个数组中的特定索引处

Javascript 将1个数组的所有元素按顺序复制到第二个数组中的特定索引处,javascript,arrays,algorithm,Javascript,Arrays,Algorithm,我正在尝试将arr1的元素复制到索引n处的arr2中。必须按照元素的确切顺序复制元素。当我向后循环箭头时,我可以让代码工作,但我不能通过测试,因为它不符合顺序 function frankenSplice(arr1, arr2, n) { let newArr = arr2.splice(" "); for(let i = 0; i < arr1.length;i++) { newArr.splice(n,0,arr1[i]); } retu

我正在尝试将arr1的元素复制到索引n处的arr2中。必须按照元素的确切顺序复制元素。当我向后循环箭头时,我可以让代码工作,但我不能通过测试,因为它不符合顺序

function frankenSplice(arr1, arr2, n) {
  let newArr = arr2.splice(" ");
  for(let i = 0; i < arr1.length;i++) {
      newArr.splice(n,0,arr1[i]);
  }
  return  console.log(newArr);
}
函数弗兰肯斯普利斯(arr1,arr2,n){
设newArr=arr2.拼接(“”);
for(设i=0;i
如何调用它的一个例子是
frankenSplice([1,2,3],[4,5,6],1)
预期输出为
[4,1,2,3,5]


我一直收到
[4,1,2,3,5,6]

不确定为什么删除6,但可能是这样的:
函数弗兰肯斯普利斯(arr1,arr2,n){
设newArr=arr2
新阵列拼接(n+1)
for(设i=arr1.length-1;i>=0;i--){
新arr.拼接(n,0,arr1[i]);
}
返回控制台日志(newArr);
}

frankenSplice([1,2,3],[4,5,6],1)输出向后的原因是您一直在相同的位置插入
n
。这会将前一个元素推到后面,因此它们以相反的顺序结束。如果通过循环每次递增
n
,则将按顺序插入它们

function frankenSplice(arr1, arr2, n) {
  let newArr = arr2.splice(" ");
  for(let i = 0; i < arr1.length;i++) {
      newArr.splice(n,0,arr1[i]);
  }
  return  console.log(newArr);
}
但是不需要循环,使用扩展语法将所有
arr1
用作对
splice()
的单个调用中的参数

函数弗兰肯斯普利斯(arr1,arr2,n){
让newArr=[…arr2];//复制arr2
newArr.splice(n,0,…arr1);//将arr1拼接到副本中
返回newArr;
}

log(frankenSplice([1,2,3],[4,5,6,1])您的示例输入和预期输出是什么?frankenSplice([1,2,3],[4,5,6],1);预期产出为[4,1,2,3,5]。我不断得到[4,1,2,3,5,6],这会产生什么结果?为什么在预期输出中删除了
6
?您的输出看起来是正确的。预期输出似乎是针对
frankenSplice([1,2,3],[4,5],1)当JSFIDLE可用时,为什么要使用它?