Javascript 有没有办法删除此索引?

Javascript 有没有办法删除此索引?,javascript,node.js,Javascript,Node.js,随着时间的推移,我需要删除此元素/索引 mainArrayOfQueues[iOfChan].push({ "userId": userId, "userName" : userName, "userRank": rank, "voteState" : 0, "idle" : setTimeout(function () { //When the time passes I want to remove this element (index);

随着时间的推移,我需要删除此元素/索引

mainArrayOfQueues[iOfChan].push({ "userId": userId, "userName" : userName, "userRank": rank, "voteState" : 0,  "idle" : setTimeout(function () {       
            //When the time passes I want to remove this element (index);
            }, time)});

push
方法返回元素的索引,因此可以将其保存在变量中并在超时函数中使用

var index = mainArrayOfQueues[iOfChan].push({
  "userId": userId,
  "userName": userName,
  "userRank": rank,
  "voteState": 0,
  "idle": setTimeout(function() {
    mainArrayOfQueues[iOfChan].splice(index, 1);
  }, time)
});
但是,这有一个问题,即如果在此超时发生之前删除了它前面的其他元素,则索引将更改。更好的解决方案是记住对象本身,然后在数组中搜索并删除它

var obj = {
  "userId": userId,
  "userName": userName,
  "userRank": rank,
  "voteState": 0,
  "idle": setTimeout(function() {
    var index = mainArrayOfQueues[iOfChan].indexOf(obj);
    if (index != -1) {
      mainArrayOfQueues[iOfChan].splice(index, 1);
    }
  }, time)
};
mainArrayOfQueues[iOfChan].push(obj);

idle
应该是函数还是setTimeout的结果?这就是idle,我希望每个玩家排队时都有一个超时时间,然后踢他一脚,就像他是afk一样!谢谢,这对我帮助很大。我知道它很好用