Javascript 在不修改原始阵列的情况下,将一个阵列切片/拼接到另一个阵列中

Javascript 在不修改原始阵列的情况下,将一个阵列切片/拼接到另一个阵列中,javascript,Javascript,我试图解决一个freecodecamp挑战,其中一个数组必须以给定的索引复制到另一个数组中,而不改变原始数组。我想出了自己的解决方案,当我console.log()时包装每个函数输入,就我所知,我得到了期望的结果。然而,它并没有通过测试。我没有使用for循环,而是试图使我的解决方案尽可能简单。我将同时显示我的解决方案和它们的解决方案 下面是一些代码,突出显示了这两个方面: 我的解决方案: function frankenSplice(arr1, arr2, n) { var vArr1 =

我试图解决一个freecodecamp挑战,其中一个数组必须以给定的索引复制到另一个数组中,而不改变原始数组。我想出了自己的解决方案,当我
console.log()时包装每个函数输入,就我所知,我得到了期望的结果。然而,它并没有通过测试。我没有使用for循环,而是试图使我的解决方案尽可能简单。我将同时显示我的解决方案和它们的解决方案

下面是一些代码,突出显示了这两个方面:

我的解决方案:

function frankenSplice(arr1, arr2, n) {
  var vArr1 = [...arr1];
  var vArr2 = [...arr2];

  var slice1 = vArr1.slice(0);
  var endBits = vArr2.splice(n);


  return [...vArr2, slice1, endBits];   
}
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;
}
例如,
frankenSplice([“爪”、“触手”],[“头”、“肩”、“膝”、“脚趾”],2)
应该返回
[“头”、“肩”、“爪”、“触手”、“膝”、“脚趾”]
,并且在我使用控制台时,它会尽我所能(尽管没有通过该规定的测试)

他们的解决办法:

function frankenSplice(arr1, arr2, n) {
  var vArr1 = [...arr1];
  var vArr2 = [...arr2];

  var slice1 = vArr1.slice(0);
  var endBits = vArr2.splice(n);


  return [...vArr2, slice1, endBits];   
}
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;
}
函数弗兰肯斯普利斯(arr1,arr2,n){
让localArray=arr2.slice();
for(设i=0;i
如果我能用我简单的逻辑线来做,我就不认为有必要使用for循环。我猜要么我是完全错误的,要么我只是需要做一个简单的调整来解决测试。感谢您的帮助。

要实现您的功能,您只需将您的
返回更改为:
返回[…vArr2,…slice1,…endBits]

如果你的目标是使你的功能尽可能短,你可以选择一行:

const frankenSplice=(arr1,arr2,n)=>[…arr2.slice(0,n),…arr1,…arr2.slice(n)]

以下是我的解决方案:

function frankenSplice(arr1, arr2, n) {
  var vArr1 = [...arr1];
  var vArr2 = [...arr2];

  var slice1 = vArr1.slice(0);
  var endBits = vArr2.splice(n);


  return [...vArr2, ...slice1, ...endBits];   
}

也许for循环某种程度上是更正确和传统的方法,或者更优雅的方法,但我现在喜欢我的解决方案。:)

这可能会更好哦,酷,谢谢你。“堆栈”的这两个子部分有什么区别?我不熟悉编码,尤其是这个网站的细节。@imvain2我确实需要等待大约40分钟才能再次发布。哦,好吧。我想我现在就继续使用他们的解决方案。:)当然,我会尝试自己写,但很难接受我之前做过的数百个挑战,并将它们整合到一个更复杂的挑战中。成功了!这很有意义,因为我创建的新变量仍然是数组,需要正确复制rest运算符@季拉夫