首页 > 解决方案 > 如何更新地图键?

问题描述

我不知道如何重新格式化地图的键。在这里,我正在创建一个具有相同值的新密钥,并删除旧密钥:

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

这似乎不起作用。更一般地说,我无法弄清楚循环遍历地图并更新它们的过程。

标签: javascript

解决方案


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}

不过,创建新地图会更容易一些。


推荐阅读