使用Javascript在Socket IO和NodeJS中查找数组中的对象

时间:2016-05-10 12:29:23

标签: javascript html arrays node.js socket.io

当我创建console.log(用户)时,我有一个在NodeJS中使用数组的用户列表,它显示数组中存在user_name:48但是当使用此代码搜索它时,它没有找到任何内容,任何人都可以帮助我好吗?

这是我的代码: 服务器端:

var users=[]; 

socket.on('user name',function(user_name){
          users.push({id:socket.id,user_name:user_name});
          len=users.length;
          len--;
          //Sending th user Id and List of users
          io.emit('user entrance',users,users[len].id);
          io.emit('userslist',users);
        console.log(users); //it displays id:/#BLABLALBA user_name:48
        });
        //Sending message to Specific user
        /*socket.on('send msg',function(data_server){
          socket.broadcast.to(data_server.id).emit('get msg',{msg:data_server.msg,id:data_server.id,name:data_server.name});
          console.log(data_server.id)
        });*/
        socket.on('check',function(){
          var searchTerm = "48",
        index = "";
    for(var i=0;i<users.length;i++){
        if (users[i].user_name === searchTerm) {
            index = users[i].id;
            console.log(index);
        }
    else
    {
      index = users[i].id;
    console.log(index);
    }
    }
          });

客户端:

$( "#test" ).click(function() {
  socket.emit('check');
});

我尝试了一个w3schools示例,它运行得很好但是在更改阵列后没有任何效果。

解决了问题 尝试typeof后我发现user_name是一个整数,所以我使用parseInt将48转换成一个整数,它完美地工作

2 个答案:

答案 0 :(得分:0)

Jquery grep函数可用于此目的

resultArray= jQuery.grep(yourArray, function( item, i ) {
  return ( item.user_id==XXXX );
});

如果你确定返回一行,

result = resultArray[0];

id = result.id,
name = result.name

答案 1 :(得分:0)

解决问题尝试typeof后我发现user_name是一个整数,所以我用parseInt把48变成一个整数,它运行得很好