javascript - 在Javascript中更新JSON数据的引用问题

标签 javascript json

我需要帮助来理解 JSON [引用问题] 的行为。

var obj = {"newData":["Hello"]};

obj["oldData"] = obj.newData;
// Here added new key "oldData" 
// Expected output is coming: {"newData":["Hello"],"oldData":["Hello"]}

obj["newData"].push("hi");
// On updating "newData"
// Excepted Output                  : {"newData":["Hello","hi"],"oldData":["Hello"]}
// But Actual Output is coming as   : {"newData":["Hello","hi"],"oldData":["Hello","hi"]}

如何解决这个问题。 如何避免更新 oldData 字段。 jsfiddle example

与对象相同的问题,jsfiddle example for objects

最佳答案

作者:obj["oldData"] = obj.newData;您创建对您的 newData 的引用数组,因此 newData 中的每个更改将影响oldData大批。使用obj["oldData"] = obj.newData.slice();相反,创建数组的克隆,以便有两个不同的数组。

关于javascript - 在Javascript中更新JSON数据的引用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42366068/

相关文章:

javascript - 如何动态调用任何js函数

android - 如何从 URL 获取值并在微调器中设置名称并将选择值 ID 发送到 fragment 中的服务器

javascript - 定义函数和if语句问题

javascript - 多场景表单 Action (后台、多 Action 、定时器)

javascript - 运算符 '+' 不能应用于 TypeScript 中的类型 'String' 和 'String'

c# - 反序列化 OData.Error 消息

javascript - 为什么 jQuery DataTables 不理解这个基本的 JSON 数组?

python - 使用 python 将字典或 JSON 文件列表导入 Elasticsearch

java - 如何将动态JSON解析为JavaBean

javascript - 在Javascript中,如何继承和扩展正在继承的方法?