我知道它适用于Set
,但我的印象是它也适用于 Array。所以我在 Chrome 中尝试了它,但很惊讶它不起作用:
const array = [1,2,3,4,5,6]
for (const item of array) {
if (item === 3 || item === 4) {
array.splice(array.indexOf(item), 1);
}
}
console.log(array) // [1,2,4,5,6]
它没有删除4
.
所以我的问题是,迭代安全是否只应该与Set
and一起使用Map
,而不是Array
?
(如果是这种情况,那么除了简单的语法之外,我看不到使用它的好处for(;;)
。我的印象for..of
是这将防止错误,即使使用Array
,就像使用Set
and一样Map
)
请注意,作为一个技巧,我可以通过克隆数组(或反向迭代)来做到这一点:
const array = [1,2,3,4,5,6]
for (const item of Array.from(array)) {
if (item === 3 || item === 4) {
array.splice(array.indexOf(item), 1);
}
}
console.log(array) // [1,2,5,6]