gpt4 book ai didi

Javascript 对象删除 - 删除另一个对象

转载 作者:行者123 更新时间:2023-11-30 20:16:40 26 4
gpt4 key购买 nike

我有两个对象:

  var parameters = [{
id: 1,
name: "test1"
}, {
id: 2,
name: "test2"
}];


var person = {
name: "Harry",
parameters: [{
id: 1
}, {
id: 2
}]
};

我用另一个对象设置了 person.parameters:

person.parameters = parameters;

现在我想从 person.parameters 中删除一些东西:

delete person.parameters[0].id;

为什么 parameter[0].id 不再可访问?

console.log(parameters[0].id);

结果:

undefined

最佳答案

当你这样做时:

person.parameters = parameters;

您只需将数组parameters 的引用传递给person.parameter。所以 parameterperson.parameter 都指向同一个引用。因此,其中任何一个所做的更改都会反射(reflect)在其他方面。

基本上你的内存中有一些东西:

a:ref12344−−−+
|
|
| +−−−−−−−−−−−−−+
+−−−>| Array |
| +−−−−−−−−−−−−−+
| | obj 1 |
| | obj 2 |
b :ref12345−−+ | |
| |
+−−−−−−−−−−−−−+

简单地深拷贝你的数组,进行单独的引用:

person.parameters = parameters.map(a => ({...a}));

关于Javascript 对象删除 - 删除另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51858157/

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