2016-05-10 4 views
2

Ich habe eine Liste von Benutzern mit Arrays in NodeJS, wenn ich console.log (Benutzer) machen zeigt, dass user_name: 48 existiert im Array, aber bei der Suche nach Mit diesem Code sagt es nichts gefunden, kann mir bitte jemand helfen?Suchen Sie ein Objekt in Array in Socket IO und NodeJS mit Javascript

Hier ist mein Code: Server Side:

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); 
    } 
    } 
      }); 

Client Side:

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

Ich versuchte, ein w3schools Beispiel und es funktionierte perfekt, aber nach dem Array nichts funktionierte ändern.

Problem Gelöst Nach dem Versuch, typeof fand ich, dass der user_name eine ganze Zahl war so i ParseInt verwendet 48 in eine ganzen Zahl zu drehen und es funktioniert perfekt

+0

Wie haben Sie den Benutzer "48" hinzugefügt? Vielleicht hast du es als Integer hinzugefügt und suchst nach String? –

+0

Ich habe es mit users.push hinzugefügt und es zeigte sich perfekt im Browser so was meinst du mit "integer"? –

+0

Auf Knoten würde ich lieber die Standard ES6 Array.prototype Methoden wie 'find()' oder 'findIndex()' beim Suchen von Objekten in einem Array verwenden. – Redu

Antwort

0

Problem gelöst Nachdem ich versucht habe, typeof zu finden, dass der user_name eine ganze Zahl war, benutzte ich parseInt, um 48 in eine ganze Zahl zu verwandeln und es funktioniert einwandfrei

0

JQuery grep Funktion ist nützlich für diesen Zweck

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

, wenn Sie sicher, dass eine Zeile zurückgeben,

result = resultArray[0]; 

id = result.id, 
name = result.name 
+0

Es funktioniert nicht mit NodeJS, weil es jQuery benötigt –