所以我正在处理一个项目,其中对象存储在一个数组中。人们可以手动删除对象,但现在我想在创建对象时这样做,它将在5秒后从阵列中删除,只有它仍在那里(不是手动删除)。我使用了拼接对象的settimeout。如何做到这只会删除对象,如果它还在那里?
编辑:
所以我不是很清楚,当超时删除了一个对象并且它不再存在时它就会像你期望的那样移除下一个对象。
这是我手动删除对象的代码:
if (intersect(player, food)) {
foods.splice(i, 1);
}
以下是使用计时器创建和删除的代码:
food = {
x: x,
y: y,
};
foods.push(foods[i]);
setTimeout(function(){
foods.splice(i, 1);
}, 10000);
答案 0 :(得分:-1)
你必须检查数组中对象的索引..
Array.indexOf()
//如果不存在则返回-1
function addToArrayAndRemoveAfter(object, array, removeAfterMs) {
array.push(object)
// remove after ms
setTimeout(() => {
var idx = array.indexOf(object);
idx > -1 && array.splice(idx, 1)
}, removeAfterMs)
}
请在下次询问时添加您的代码:
从人类书面文本解析代码几乎要困难得多,反之亦然