在Javascript中更新JSON数据的参考问题

时间:2017-02-21 11:29:01

标签: 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

3 个答案:

答案 0 :(得分:1)

通过import boto3 def lambda_handler(event, context): ec2 = boto3.resource('ec2', region_name='eu-west-1') ec2_list = ec2.instances.all() for instance in ec2_list: if instance.tags: for tag in instance.tags: print tag else: print "no tags" ,您可以创建对obj["oldData"] = obj.newData;数组的引用,以便newData中的每次更改都会影响newData数组。而是使用oldData创建一个数组克隆,以便有两个不同的数组。

答案 1 :(得分:0)

您可以使用newData = Object.assign({}, oldData); 并且在更改newDate的任何属性之后,不要害怕改变oldDate ...

答案 2 :(得分:0)

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

obj["oldData"] = obj.newData.concat(); //make copy of array

obj["newData"].push("hi");