【发布时间】:2021-01-18 05:58:23
【问题描述】:
又是一个令人困惑的问题:
这里我将数组复制到另一个变量中,我希望当我在另一个变量中更改某些内容时不会更改原始数组但是两个数组都更改了为什么?
const groups = [[1, 2, 3, 4 ,5], [2,3]];
const sets = [...groups];
sets[1].push(9000); // I just push a number into sets NOT groups
console.log(sets);
console.log(groups);
只有当我们有一个数组时才会发生这种情况!
我缺少什么以及如何解决这个问题?
【问题讨论】:
-
展开语法执行浅拷贝,而不是深拷贝。复制数组中的数组仍然引用
groups数组中的相同数组。 -
等等....什么?那我该怎么办...
-
如果它只是一个二维数组,你可以做类似
const sets = groups.map(arr => [...arr])这样的操作,这将克隆每个内部数组,并将存储在 .map() 生成的结果外部数组中。
标签: javascript arrays