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一样!谢谢,这对我帮助很大。我知道它很好用