for循环只迭代一次

时间:2016-03-29 01:24:06

标签: javascript node.js for-loop

我有一个客户端对象数组,所以我使用for循环来迭代它 我有clients.lenght = 2,但它只迭代1.我在这里没有变量范围问题。只是不明白它为什么会发生。 的代码

socket.on('idleDisconnectAllClient', function(receivedData) {
    LOG("idleDisconnectAllClient");

    var clientIndex = findMainIndexByDataBaseID(receivedData.dataBaseID);
    if (clientIndex != -1) {
        console.log('clients lenght', clients[clientIndex].data.length);
        for (var i = 0; i < clients[clientIndex].data.length; i++) {
            var client = clients[clientIndex].data[i];
            client.disconnect();

            console.log('client ' + i);
        }
    }
});

控制台

2016-03-29 04:13:01 - idleDisconnectAllClient 
clients lenght 2         
client 0

2 个答案:

答案 0 :(得分:1)

jpaljasma - https://stackoverflow.com/users/2079695/jpaljasma 帮助我理解这个问题。

当我使用 - client.disconnect()时,它只是从客户端数组中删除当前客户端。这就是为什么我的循环只进行了一次。

答案 1 :(得分:0)

您可以通过ES5 forEach构造进行迭代:

clients[clientIndex].data.forEach(client => client.disconnect())

(免责声明,这使用来自ES6的胖箭头,可能不适用于较旧的节点版本)