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

标签 javascript arrays arguments

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

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/

相关文章:

Python 参数解析器,在 -h 之前引发异常

qt - Qt 信号和槽的参数类型,const 引用限定符重要吗?

javascript - 将带有样式的 HTML 插入到 QuillJS 中?

javascript - 从值数组中设置 Angular 中选定的选项

Matlab 函数处理可变和未知数量的输出

php - 有点简单的PHP数组求交问题

php - 连接数组以进入多维数组

javascript - 如何在 javascript 函数中设置新的变量值?

javascript - document.createElement 非法调用

PHP 从保留先前键的数组中提取部分