You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ES6 Map遍历forEach时修改值是否安全?含参数顺序疑问

ES6 Map.forEach 遍历修改的安全性问题

你的业务场景和代码示例:

const handleBackButton = () => {
    errorMap.forEach((value:boolean, key:string) => {
        if (key.endsWith(":1")) {
            errorMap.set(key, false);
        }
    });
};

1. 仅修改现有键对应的值,遍历是否安全?

完全安全。Map的forEach遍历是基于启动时的键集合快照来执行的,修改已存在条目的值只会更新对应内容,不会打乱遍历顺序、重复遍历或遗漏条目。你当前只修改值不新增键的逻辑完全没问题,可以放心使用。

另外提一句:Map.forEach的参数顺序确实是(value, key, map),和很多对象遍历的键在前逻辑不一样,你现在的写法是正确的。

2. 遍历过程中新增条目,会被遍历到吗?

不会。forEach启动时会生成当前Map键集合的快照,遍历过程中新添加的键不会被纳入本次遍历流程。举个例子,如果你在回调里调用errorMap.set('newKey:1', true),这个新键不会被本次forEach处理,要等下一次遍历才会被扫描到。

内容的提问来源于stack exchange,提问作者gene b.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 06:24:54