将套接字连接存储在javascript数组中,并在数组上使用array.find()时会出现意外行为

将套接字连接存储在javascript数组中,并在数组上使用array.find()时会出现意外行为,javascript,node.js,socket.io,socket.io-1.0,Javascript,Node.js,Socket.io,Socket.io 1.0,在以下sockets.find语句后面的代码中,console.logAFTER语句不执行 io.sockets.on('connection', function (socket) { var this_socket = socket; socket.username = null; socket.gameSessionName = null; socket.update_usernames = false; sockets.push(socket)

在以下sockets.find语句后面的代码中,console.logAFTER语句不执行

  io.sockets.on('connection', function (socket) {
    var this_socket = socket;
    socket.username = null;
    socket.gameSessionName = null;
    socket.update_usernames = false;
    sockets.push(socket);  // sockets is AN ARRAY

    socket.on('loaded', function (data) {
        var previous_socket;
        socket.username = data.username;
        socket.status = 'BROWSE_PLAYERS'; // WAIT_FOR_ACCEPT, PLAYING
        console.log("BEFORE");    

        previous_socket = sockets.find (function(s) {           
            return false;
        });

        console.log("AFTER"); // THIS IS STATEMENT IS NOT EXECUTED
        ....
如果socket.find代码的注释如下所示,则会打印console.logAFTER语句

        // previous_socket = sockets.find (function(s) {            
        //  return false;
        // });

看起来像是插座。找到。。。这种说法有副作用。如何解决此问题。

sockets.filter not sockets.find这里声明了sockets.find?@lujcon谢谢。忽略了在ES6中声明的发现