Javascript 如何从JSON编辑新添加的列表?
我需要从JSON中克隆一个数据作为数组的键,然后编辑新添加的键 以下是我使用的完整代码:Javascript 如何从JSON编辑新添加的列表?,javascript,arrays,json,Javascript,Arrays,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'; con
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\u arr[2]only?实际上,您正在对对象进行浅层复制。这就是为什么它会更改用于复制的对象的值
你需要考虑JSON对象的深度拷贝,只需要修改第二行< /P>
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);
实际上,您正在做对象的浅拷贝。这就是为什么它会更改用于复制的对象的值
你需要考虑JSON对象的深度拷贝,只需要修改第二行< /P>
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);
您没有添加新对象,而是再次添加同一对象。通过编辑索引1,您正在编辑与索引2相同的对象。索引键是对数组中值的引用。请删除
var data
并使用:test\u arr[index]。name='janjan'
您不是在添加新对象,而是在再次添加同一对象。通过编辑索引1,您正在编辑与索引2相同的对象。索引键是对数组中值的引用。请删除var数据
并使用:test\u arr[index]。name='janjan'
这很有效!,我将JSON.stringify分离为一个不同的变量并解析该变量,非常感谢!这行得通!,我将JSON.stringify分离为一个不同的变量并解析该变量,非常感谢!