javascript - 如何更新地图键?
问题描述
我不知道如何重新格式化地图的键。在这里,我正在创建一个具有相同值的新密钥,并删除旧密钥:
const beatles = new Map();
beatles.set('John', 1);
beatles.set('Paul', 2);
beatles.set('George', 3);
beatles.forEach((value, key) => {
beatles.set(`${key} and Ringo`, value)
.delete(key);
});
console.log(beatles); //doesn't work
这似乎不起作用。更一般地说,我无法弄清楚循环遍历地图并更新它们的过程。
解决方案
Map.prototype.forEach
对实时集合进行操作 - 如果在其中一个回调期间添加了新键,则该新键将是该过程稍后必须迭代的另一次迭代。你有一个无限循环。
提取条目,然后清除映射,然后遍历条目:
const beatles = new Map();
beatles.set('John', 1);
beatles.set('Paul', 2);
beatles.set('George', 3);
const entries = [...beatles.entries()];
beatles.clear();
for (const [key, value] of entries) {
beatles.set(`${key} and Ringo`, value);
}
console.log(beatles);
// result:
// Map(3) {"John and Ringo" => 1, "Paul and Ringo" => 2, "George and Ringo" => 3}
不过,创建新地图会更容易一些。
推荐阅读
- wkhtmltopdf - 如何在 wkhtmltopdf 中使用替换或将值发送到标题
- python - 如何在python列表中的2个元素之间插入元素?
- php - Laravel Blade 到 Vuejs
- r - 使用 quadprog 包签署错误/反转结果
- python - 如何在不通过扬声器播放的情况下将 mp3 或 wav 文件直接播放到我自己的麦克风中?
- parsing - 使用 Bison 识别特定的语法错误
- python - 如何更新函数内的变量?
- microsoft-teams - 正确实现 ms 团队应用程序中的注销功能
- python - 无法修复 Django 中的迁移冲突
- javascript - 使用 React Router 切换页面时 JQuery 未触发