如何使用拼接和切片将一个数组放入另一个数组

时间:2019-10-02 22:09:40

标签: javascript arrays functional-programming

我的问题是关于该程序的输出的:在FCC(freecodecamp)控制台中,我看到4,3,2,1,5,而在节点控制台中,我看到[ 4, 3, 2, 1, 5 ](与其他阵列相同)。

我也在第8行:let result = array2Copy.map(i => i.toString());

上进行了尝试
function frankenSplice(arr1, arr2, n) {
  let array2Copy = arr2.slice(0);

  for (let i = 0; i < arr1.length; i++){
    array2Copy.splice(n, 0, arr1[i]);
  }
  let result = array2Copy;  

  return array2Copy;
}

console.log(frankenSplice([1, 2, 3], [4, 5], 1));-->4,3,2,1,5
console.log(frankenSplice([1, 2], ["a", "b"], 1));-->a,2,1,b

根据FCC控制台,我需要以下输出:[4, 1, 2, 3, 5]

1 个答案:

答案 0 :(得分:1)

首先请记住,splice的参数是:

  • (1)应当添加/删除项目的索引
  • (2)要删除的项目数
  • (3),(4),(5),...(可选)要添加的项目

您需要将一个数组插入另一个数组,因此只需要一个splice:要插入项目的索引是参数n,并且您不想删除任何数组项,因此第二个参数应为0,然后指定要添加到 add 的项,只需扩展到splice参数列表的其余部分即可:

function frankenSplice(arr1, arr2, n) {
  // don't mutate the argument
  const newArr = arr2.slice();
  newArr.splice(n, 0, ...arr1);
  return newArr;
}

console.log(frankenSplice([1, 2, 3], [4, 5], 1)); //-->4,3,2,1,5
console.log(frankenSplice([1, 2], ["a", "b"], 1)); //-->a,2,1,b