在 JavaScript 的 for...of 循环中获取数组项的索引

JavaScript 的 for...of 循环提供了一种简单的方式来迭代各种可迭代对象,包括数组、字符串、MapSet 对象。与其他选项(例如 Array.prototype.forEach())相比,它被认为有一个限制,即你只能获取可迭代对象中每个项的值。但实际上并非如此,你可以轻松地利用 Array.prototype.entries() 来获取每个数组项的索引和值:

const items = ['a', 'b', 'c'];

for (let [index, item] of items.entries()) {
  console.log(`${index}: ${item}`);
}
// 输出:0: a, 1: b, 2: c

此外,你可以使用扩展运算符(...)将字符串转换为数组,然后以相同的方式使用 Array.prototype.entries()。最后,MapSet 的原型提供了类似的方法(分别是 Map.prototype.entries()Set.prototype.entries()),可以以相同的方式使用。

如果你对 for...of 及其语法不熟悉,我强烈建议你阅读一下关于 JavaScript 中各种迭代方法的文章