gpt4 book ai didi

javascript - Splice 不复制对象数组

转载 作者:行者123 更新时间:2023-12-01 04:06:25 27 4
gpt4 key购买 nike

In this plunk我有一个对象数组 a 的示例我用 slice() 复制至b 。我更改了 a 中的对象之一但它也改变了b 。不是 slice应该复制数组,包括其内容?我需要ab有不同的指针。

Javascript

var a = [{x1:1, x2:2}, {x1:3, x2:4}];

var b = a.slice();


a[1].x1 = 5;


console.log(b[1]);

打印:

x1: 5 
x2: 4

最佳答案

来自 MDN:

For object references (and not the actual object), slice copies objectreferences into the new array. Both the original and new array referto the same object. If a referenced object changes, the changes arevisible to both the new and original arrays.

For strings, numbers andbooleans (not String, Number and Boolean objects), slice copies thevalues into the new array. Changes to the string, number or boolean inone array does not affect the other array.

对数组中的对象执行深度复制很困难,但是this answer建议一种方法来做到这一点,只要您的数组仅包含 JSON 可序列化的内容:

var clonedArray = JSON.parse(JSON.stringify(originalArray));

关于javascript - Splice 不复制对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41786946/

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