删除数组的“父索引”有什么更好的方法?

enter code here我在做一个nodejs应用程序…让我显示我的问题;;

 //id = dinamic string.. "user1", "user2", "userX" usersArray = []; usersArray[id]["socket"] = socket; 

当套接字结束时,我想从usersArray中移除[id] ..但是此时id不是可用的

 socket.on('end', function () { ?........? socket.end(); }); 

怎么做?

socket.id这是一个很好的每个套接字的标识符。 然后,您可以使用关联数组而不是usersArray

 var usersArray = {}; usersArray[socket.id] = some_user_data; 

然后你可以使用delete usersArray[socket.id]delete usersArray[socket.id]这个条目。

假设你可以通过socket.on('end')函数访问thisId,你可以这样做:

 socket.on('end', function () { usersArray.splice(thisId, 1); socket.end(); }); 

根据你添加套接字到你的userArray (这似乎是一个object而不是一个array注意到你的id的例子),你可以考虑添加一个新的callback套接字,当你把它添加到数组

 usersArray[someId].socket = socket; // New callback to just delete the usersArray entry usersArray[someId].socket.on('end', function() { delete usersArray[someId]; }); 

保持当前socket.on不变:

 socket.on('end', function () { /* No new code here, as the deletion happens when the socket is added to usersArray! */ socket.end(); });