Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从JSON编辑新添加的列表?_Javascript_Arrays_Json - Fatal编程技术网

Javascript 如何从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

我需要从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\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分离为一个不同的变量并解析该变量,非常感谢!