在 javascript 中循环遍历一个不可变的 Map
Loop through an immutable Map in javascript
我是javascript的新手,我必须执行一项任务
我有一个不可变的地图:
Map({
isNamed: true,
isMarried: "",
isMan: false
})
现在我必须遍历这个地图,如果一个值为“”我必须用 false 替换它所以我的最终地图是这样的:
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。我错过了什么?
操作方法如下:
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);
});
好吧,实施过程中存在一些问题。
- forEach() 始终 returns 未定义。
- 您需要使用 Map 实例方法来获取、设置或删除值。
- 您正在改变现有的地图对象。
我是javascript的新手,我必须执行一项任务 我有一个不可变的地图:
Map({
isNamed: true,
isMarried: "",
isMan: false
})
现在我必须遍历这个地图,如果一个值为“”我必须用 false 替换它所以我的最终地图是这样的:
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。我错过了什么?
操作方法如下:
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);
});
好吧,实施过程中存在一些问题。
- forEach() 始终 returns 未定义。
- 您需要使用 Map 实例方法来获取、设置或删除值。
- 您正在改变现有的地图对象。