我需要帮助理解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
答案 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");