首页 > 解决方案 > 在 javascript 中循环一个不可变的 Map

问题描述

我是 javascript 的新手,我必须执行一项任务,我有一个不可变的地图:

Map({
 isNamed: true,
 isMarried: "",
 isMan: false
})

现在我必须遍历这个 Map,如果一个值为“”,我必须用 false 替换它,所以我的最终 Map 是这样的:

isNamed: true,
 isMarried: false,
 isMan: false
})

我使用了这样的 forEach 方法:

const prepareData = cardData.forEach((value, key, map = {}) => {
      if (value === '') {
        map[key] = false;
      } else {
        map[key] = value;
      }
      return map;
    });

但输出为 0。我错过了什么?

标签: reactjsimmutable.js

解决方案


这是如何做到的:

for (let item of yourPreviousMap.entries()) {
  const [key, value] = item;
  if (value === '') {
    yourPreviousMap.set(key, false);
  }
}

或者如果这段代码太难或者你不想改变原始地图对象,你可以直接创建一个新地图:

const yourNewMap = new Map();

yourPreviousMap.forEach((value, key) => {
  yourNewMap.set(key, value === "" ? false : value);
});

推荐阅读