gpt4 book ai didi

javascript - 在javascript中修改对象值的问题

转载 作者:行者123 更新时间:2023-11-29 15:39:08 26 4
gpt4 key购买 nike

我有以下代码。

var emp={"EmployeeLists":[{"ID":1,"NAME":"Anbu","Salary":80000},{"ID":2,"NAME":"Anand","Salary":90000}]};

// Inserting a new object into EmployeeLists
emp.EmployeeLists.splice(2,0,emp.EmployeeLists[1])
console.log(JSON.stringify(emp));

输出: {"EmployeeLists":[{"ID":1,"NAME":"暗部","Salary":80000},{"ID":2, "NAME":"Anand","Salary":90000},{"ID":2,"NAME":"Anand","Salary":90000}]}

// Modifying inserted object NAME Anand into MANI
emp.EmployeeLists[2].NAME="MANI";
console.log(JSON.stringify(emp));

输出: {"EmployeeLists":[{"ID":1,"NAME":"暗部","Salary":80000},{"ID":2, "NAME":"**MANI**","Salary":90000},{"ID":2,"NAME":"**MANI**","Salary":90000}]}

添加新对象后。我试图将该对象的名称 Anand 修改为 MANI 但它被修改为对象的名称 TwoThree .

最佳答案

好问题!您所看到的是对象的底层共享,因为如果您不小心,Javascript 会 secret 地将对象视为 C 中的指针。让我们重写它来制作对象的克隆。我们将使用 this previous Stackoverflow answer (在 Javascript 中克隆对象非常烦人)。

function clone(obj) {
if (null == obj || "object" != typeof obj) return obj;
var copy = obj.constructor();
for (var attr in obj) {
if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr];
}
return copy;
}

emp.EmployeeLists.splice(2, 0, clone(emp.EmployeeLists[1]));
emp.EmployeeLists[2].NAME = "MANI";
// {"EmployeeLists":[{"ID":1,"NAME":"Anbu","Salary":80000},{"ID":2,"NAME":"Anand","Salary":90000},{"ID":2,"NAME":"MANI","Salary":90000}]}

关于javascript - 在javascript中修改对象值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22728466/

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