gpt4 book ai didi

javascript - Map.forEach,为什么删除循环中的项目有效?

转载 作者:行者123 更新时间:2023-11-30 11:20:29 25 4
gpt4 key购买 nike

如果您在 forEach 循环中删除数组的项目,您可能会遗漏一些元素,例如:

    let arr = [['One', 1], ['Two', 2], ['Three', 3], ['Four', 4]]
arr.forEach((i, ix) => i[1] <= 3 && arr.splice(ix,1)); // Two is not deleted
console.log(arr)

但是如果您将 forEach 应用于 Map 对象,它会起作用:

let map = new Map( [['One', 1], ['Two', 2], ['Three', 3], ['Four', 4]] );
map.forEach( (value,key) => value <= 3 && map.delete(key));
console.log([...map.entries()])

Map.forEach 中确保可信删除和其他操作(插入?)的内部机制是什么

(这起源于一个related question)

最佳答案

数组有动态索引,如果一个元素被拼接,其余元素就会移动并获得新的索引。

就是这个原因,因为你通过从头开始迭代拼接了错误的部分。


通过使用 Map ,索引用作键,如果一个项目被删除, map 的所有其他项目将保留其键。

通过稍后渲染数组,丢失的项目及其键都消失了。

关于javascript - Map.forEach,为什么删除循环中的项目有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50020756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com