for循环仅迭代一次

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

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 

jpaljasma – https://stackoverflow.com/users/2079695/jpaljasma帮助我了解这个问题&#x3002;

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

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

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

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