gpt4 book ai didi

javascript - 如何在不更改原始参数数组的情况下操作传递给函数的 JavaScript 数组?

转载 作者:行者123 更新时间:2023-12-03 17:33:59 24 4
gpt4 key购买 nike

我想处理传递给函数的数组,同时保持原始数组不变。这是一个简单的问题示例。

function whyDoesArrChange(arr) {
var newArr = arr;
newArr.push(4);

return arr;
}

console.log(whyDoesArrChange([1,2,3]));
// OUT: [1,2,3,4]

我只想更改 newArr,但 arr(来自参数)也返回推送的值(返回 [1,2, 3,4])。我怎样才能避免这种情况?

最佳答案

将数组传递给函数时,该数组的值是一个引用,您必须克隆它以破坏引用。

有多种方法可以实现这一点:

1 - 使用 .slice();

var newArr = arr.slice();

2 - 使用 .concat

var newArr = arr.concat([]);

3 - 使用 JSON.parse & JSON.stringify

var newArr = JSON.parse(JSON.stringify(arr));

您可以在 jsperf 中查看更多方法并查看它们的性能。我找到了。

关于javascript - 如何在不更改原始参数数组的情况下操作传递给函数的 JavaScript 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43727295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com