我需要在时间流逝时删除此元素/索引。
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)});
答案 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);