gpt4 book ai didi

javascript - 如何修改 Javascript 中对象克隆数组中的对象值

转载 作者:行者123 更新时间:2023-11-28 14:11:25 25 4
gpt4 key购买 nike

我有一个像这样的对象数组:

const arrA = [{a: true}];

我创建了一个数组的副本,如下所示:

const arrB = Array.from(arrA);

但是当我修改arrB中对象的值时,arrA中的值也会被修改。

arrB[0].a = false
// arrB = [{a:false}]
// arrA = [{a:false}] - gets modified also

如何在不修改原始数组的情况下修改克隆数组中的对象值。

最佳答案

Array.from 创建所谓的浅拷贝。浅复制意味着您有 2 个变量 - arrAarrB 指向内存中的同一个数组,因此您更改一个变量就会更改另一个变量。由于内部的对象更加复杂 - 因为即使您设法在内存中创建不同的数组 - 它可能仍然指向与前一个数组相同的对象,从而再次导致 - 一个更改同时更改两个。

相反的是深度复制 - 使用保存相同数据的新对象创建一个新数组,而不是引用。有几种方法,您可以阅读更多 here ,我推荐 JSON.parse/stringify 作为最简单的一个:

const arrA = [{a: true}];
const arrB = JSON.parse(JSON.stringify(arrA));

这会给你你想要的:)

关于javascript - 如何修改 Javascript 中对象克隆数组中的对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59306896/

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