敖烈的存档点

Back

Map() forEach 循环 获取当前参数和IndexBlur image

Map.prototype.forEach 方法中,forEach 的回调函数参数只提供 valuekeyMap 本身 ,没有直接的 index。如果需要获取索引,可以通过以下方式实现。

方法一:使用外部计数器#

const mapData = new Map([
  ["key1", "value1"],
  ["key2", "value2"],
  ["key3", "value3"],
]);

let index = 0;
mapData.forEach((value, key) => {
  console.log(`Index: ${index}, Key: ${key}, Value: ${value}`);
  index++;
});
javascript

方法二:转换为数组后使用索引#

可以先使用 Array.from()Map 转换为数组,利用数组的 forEach,它支持索引参数。

const mapData = new Map([
  ["key1", "value1"],
  ["key2", "value2"],
  ["key3", "value3"],
]);

Array.from(mapData).forEach(([key, value], index) => {
  console.log(`Index: ${index}, Key: ${key}, Value: ${value}`);
});
javascript

方法三:结合 entries()for-of使用 entries() 和解构赋值,通过额外的计数器变量来实现索引。

const mapData = new Map([
  ["key1", "value1"],
  ["key2", "value2"],
  ["key3", "value3"],
]);

let index = 0;
for (const [key, value] of mapData.entries()) {
  console.log(`Index: ${index}, Key: ${key}, Value: ${value}`);
  index++;
}
javascript

输出示例#

对于如下 Map

const mapData = new Map([
  ["key1", "value1"],
  ["key2", "value2"],
  ["key3", "value3"],
]);
javascript

输出结果

Index: 0, Key: key1, Value: value1
Index: 1, Key: key2, Value: value2
Index: 2, Key: key3, Value: value3
plaintext

推荐使用 方法二方法三 ,代码更加简洁且不容易出错。

Map() forEach 循环 获取当前参数和Index
https://astro-docs.vercel.app/blog/map-foreach
Author 敖烈 / Yunus
Published at December 16, 2024
Comment seems to stuck. Try to refresh?✨