如何更新javascript对象

Lea*_*ins 1 javascript arrays jquery

我有一个像js的对象

[{"name":"John","group":"t1..." .....}]
Run Code Online (Sandbox Code Playgroud)

所以要从同一个t1创建新用户,我循环使用obj

var new_user;
for(var i=0; i<users.length; i++) {
  if(users[i].group === 'group name goes here') {
    new_user = users[i];
    break;
  }
}
Run Code Online (Sandbox Code Playgroud)

然后只是推它使用users.push(new_user);然后我尝试改变使用的名称

var l = users.length - 1; users[l].name = 'Jack';
Run Code Online (Sandbox Code Playgroud)

它会更改所有用户的名称.

[{"name":"Jack","group":"t1..." .....},{"name":"Jack","group":"t1..." .....}]
Run Code Online (Sandbox Code Playgroud)

我知道我做错了什么.我感谢任何帮助.

Han*_*eev 7

这里的问题是您将新变量名称分配给旧对象.这是一个参考,而不是对象的副本.new_user = users[i]创建new_user链接到的引用users[i].您必须复制该users[i]对象,才能更改new_user.Underscore有一个可以使用的复制/克隆功能.