将原始阵列复制到另一个阵列,而无需修改原始阵列?

时间:2019-03-21 08:12:15

标签: arrays reactjs

我有两个数组,并且包含类似的数据

let arr1 = ['IND','JPN','USA']
let arr2 = [...arr1]
console.log(arr2)

我想将数据从arr1复制到arr2,因为我已经使用... 但是这里arr1发生了变化,而arr2也发生了变化,如何避免arr1中的任何变化都不会改变arr2中的项。

arr1数据来自渲染,并使用props传递到另一个组件。

2 个答案:

答案 0 :(得分:3)

[... arr1]正在执行浅表复制,只要您要克隆的值仅深一层,那么使用[... arr1]就可以了。 在您的示例中,更新arr1不会更改arr2

let arr1 = [1,2,3,4];
let arr2 = [...arr1];
// ex.  
// arr1[0] = 'A';  
// arr2 will still be [1,2,3,4]  

但是用于深度克隆。万一数组中的项目有对象。
您将需要使用其他解决方案。 Lodash为此提供了一种方法:

let arr2 = _.cloneDeep(arr1);

还有一种使用JSON.stringify进行深度克隆的方法,但是如果您在一个对象中分配了函数,则不会被克隆

JSON.parse(JSON.stringify(arrayOfObjects))

答案 1 :(得分:0)

您是否尝试过Array.from()?

let arr2 = Array.from(arr1);

您可以在MDN

看到链接。