当我创建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转换成一个整数,它完美地工作
答案 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变成一个整数,它运行得很好