a_json = {"数组":"1","字典":"2"}
tmp_json = {}
b_list = []
for(var key in a_json){
tmp_json['val'] = a_json[key]
tmp_json['name'] = key
//先把json对象转成字符串,再转成json格式,即可实现,json对象修改但是b_list的值不变的情况
b_list.push(JSON.parse(JSON.stringfy(tmp_json)))
//这种输出如下
console.log(b_list) //b_list=[ {"name":"数组","val":"1"},"name":"字典","val":"2"}]
//直接赋值tmp_json
b_list.push(tmp_json)
//这种输出如下,tmp_json的值变化,会导致b_list的值变化。原因:直接传tmp_json是浅拷贝的形式,给的是tmp_json在内存上的地址,地址上的内容一旦发生变化,则指向的内容也变化。因此需要进行转化为字符串,这样可以进行深拷贝,从新开辟一个物理空间给到tmp_json
console.log(b_list) //b_list=[ {"name":"字典","val":"2"},"name":"字典","val":"2"}]
}
参考文章:https://blog.csdn.net/u011295864/article/details/88943710