首页 > 解决方案 > 如何从 JSON 编辑新添加的列表?

问题描述

我需要从 JSON 中克隆数据一个数组的键,然后编辑新添加的键。

这是我使用的完整代码:

var test_arr = [{'name' : 'data','item':'data2'},{'name' : 'helw','item':'data3'}];
var test_arr1 = test_arr[1];
test_arr.push(test_arr1);
index = 2;
var datas = test_arr[index];
datas.name = 'janjan';
console.log(test_arr);

从上面的代码中,我复制了 test_arr[1] 并将其推送到 test_arr 中,创建了一个新索引,

我成功地在 test_arr (test_arr[2]) 上添加了一个新索引,但是当我编辑 test_arr[2] 时,它也会编辑 test_arr[1]。

[
  { name: 'data', var2: 'data2' },
  { name: 'janjan', var3: 'data3' },
  { name: 'janjan', var3: 'data3' }
]

有没有办法只编辑 test_arr[2] ?

标签: javascriptarraysjson

解决方案


实际上你正在做对象的浅拷贝。这就是为什么它会改变你用来复制的对象的值。

您需要考虑 JSON 对象的深层副本,您只需要修改第二行

var test_arr = [{'name' : 'data','item':'data2'},{'name' : 'helw','item':'data3'}];
var test_arr1 = JSON.parse(JSON.stringify(test_arr[1]));
test_arr.push(test_arr1);
index = 2;
var datas = test_arr[index];
datas.name = 'janjan';
console.log(test_arr);

推荐阅读