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

时间:2013-05-08 17:46:27

标签: javascript node.js

enter code here我正在创建一个nodejs应用程序...让我展示我的问题;;

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

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

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

怎么做?

3 个答案:

答案 0 :(得分:2)

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

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

然后,您可以使用delete usersArray[socket.id]删除此条目。

答案 1 :(得分:0)

假设您可以从socket.on('end')函数内部访问thisId,您可以执行以下操作:

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

答案 2 :(得分:0)

根据您将套接字添加到userArray的位置(这似乎是object而不是array注意到id的示例),您可以考虑只需在将其添加到数组

时向套接字添加新的回调
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();
});