使 JavaScript 的拼接无损

ise*_*maj 3 javascript

有什么办法可以做到splice()无损呢?

我需要做的是arr2在调用该函数后保留原样。

function foo(arr1, arr2, n) {
   let result = arr2;
   result.splice(n, 0, ...arr1.slice(0, arr1.length));
   console.log(arr2);
}

foo(["I'm", "not", "done"], ["sorry", "yet"], 1);
Run Code Online (Sandbox Code Playgroud)

虽然它返回的sorry,I'm,not,done,yet我想要的,但 的元素arr2不应该改变

AKX*_*AKX 6

您可以在使用 修改数组之前(浅)复制数组 .concat

let result = [].concat(arr2);
// ... modify result...
Run Code Online (Sandbox Code Playgroud)