javascript - 使用 javascript 数组填充 JSON 并修改条目

标签 javascript arrays json

使用以下代码修改 JSON 数组(嵌套到另一个数组中)似乎不行:

   var names = [{'name': 'ourname'},{'name': 'yourname'}] ;

    var array = [{
        "year": "2015",
        names
      },{
        "year": "2016",
         names
      }];

我无法通过执行此操作来修改“数组”中的单个名称条目

array[0].names[1].name="MY NAME"

因为它实际上修改了“0”行中的所有名称条目:

输出:

0:0 ourname
0:1 MY NAME
1:0 ourname
1:1 MY NAME

笨蛋here

我正在寻找一种干净的方法来在名称数组中实现正确的单一修改,因为我想避免循环来执行此操作。

感谢您的帮助

最佳答案

因为它们指向同一个数组,而且,仅通过 .slice 克隆 names 是不够的,因为数组包含对象 不是原始类型,因此您需要从原始名称进行深度克隆并分配给每个对象。 所以你需要将代码更改为:

var array = [{
  "year": "2015",
  names: JSON.parse(JSON.stringify(names))
}, {
  "year": "2016",
  names: JSON.parse(JSON.stringify(names))
}];

查看已编辑的pluker .

我在这里使用 JSON.parse(JSON.stringify(names)) 来简单地从原始数组创建深度克隆,还可以有其他方法。

关于javascript - 使用 javascript 数组填充 JSON 并修改条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31994437/

相关文章:

javascript - 尝试在同一输入字段上调用两个函数,但只调用一个

javascript - meteor 部署

c++ - 你如何在 C++ 中将字节数组转换回 jpeg

c - 将 .dat 文件中的 double float 存储到一维数组中

java - 使用 GSON 反序列化数组

json - PostgreSQL-JSON

javascript - 在 Meteor 中重用相同的 block 助手会导致奇怪的上下文问题

javascript - 将 JavaScript ES6 函数转换为 ES3

java - 从字节数组获取像素值

Java Jackson从多个模块中选择注册模块将JSON序列化为字符串?