有没有一种方法可以删除此索引?

时间:2019-01-12 00:15:03

标签: 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);
            }, time)});

1 个答案:

答案 0 :(得分:1)

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);