无法为数组内的对象赋值

时间:2018-05-09 20:05:37

标签: javascript

我正在编写一个逻辑来控制聊天中的在线用户。我不知道为什么我不能更新数组中的对象。如何更改对象属性。我有点迷茫,因为我希望它能起作用,我不知道出了什么问题。

我的代码:

 var users = []; 
 var isOnline= false;

  //check if the user is present in the users array, if it is just update the socket id
   for (var i = 0; i < users.length; i++) {

       if (users[i].HId == usuario.id) {
         console.log("new id " + client.id );
         console.log("id before " + users[i].id);
         usuarios[i].id == client.id; // value doesn't change
         console.log("id after " + users[i].id);

        isOnline= true;
     }


  }

 //if the user is not present add him to the array
 if(!isOnline)
  users.push({ name: user.nome, HId: user.id, id: client.id }); 

enter image description here

3 个答案:

答案 0 :(得分:1)

你的做作错误

应该是

     usuarios[i].id = client.id; // value doesn't change

而不是

     usuarios[i].id == client.id; // value doesn't change

答案 1 :(得分:0)

更改

     usuarios[i].id == client.id; // value doesn't change

     usuarios[i].id = client.id; 

==是一个逻辑等于。因此usuarios[i].id == client.id是一个布尔表达式。 usuarios[i].id = client.id是一项实际的任务。

答案 2 :(得分:0)

==(或者你应该使用的===)会导致true或false。它是一个布尔检查。您想要分配值的是单个等于

usuarios[i].id = client.id; // assigns a value