0

我试图将 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);
}

应该如何调用它的一个例子是frankenSplice([1, 2, 3], [4, 5, 6], 1);
预期的输出是[4, 1, 2, 3, 5]
我不断得到[ 4, 1, 2, 3, 5, 6 ]

4

2 回答 2

0

您的输出倒退的原因是因为您一直在同一位置插入n。这会将前一个元素推到其后,因此它们以相反的顺序结束。如果您n每次通过循环递增,您将按顺序插入它们。

但是不需要循环,使用扩展语法arr1在一次调用中使用 all 作为参数splice()

function frankenSplice(arr1, arr2, n) {
  let newArr = [...arr2]; // make copy of arr2
  newArr.splice(n, 0, ...arr1); // splice arr1 into the copy
  return newArr;
}

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

我不明白你为什么不期望6输出。

于 2020-10-20T15:56:30.917 回答
0

不知道为什么 6 被删除,但可能是这样的:

function frankenSplice(arr1, arr2, n) {
  let newArr = arr2
  newArr.splice(n+1)
  for(let i = arr1.length - 1; i >= 0; i--) {
      newArr.splice(n,0,arr1[i]);
  }
  return  console.log(newArr);
}

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

于 2020-10-20T15:51:44.180 回答