JavaScript中entries()、keys()、values()是可迭代对象的内置方法,返回迭代器:数组按索引/值/键值对遍历;Map按键/值/键值对(默认)遍历;Set的keys()与values()相同,entries()返回[value,value]。

JavaScript 中的 entries()、keys() 和 values() 是数组、Map、Set 等可迭代对象内置的迭代器方法,它们返回一个迭代器对象(Iterator),可用于 for...of 循环或手动调用 next() 遍历。
数组的 entries()、keys()、values()
数组原生支持这三个方法,但行为略有不同:
-
keys():返回索引的迭代器(0, 1, 2, ...) -
values():返回元素值的迭代器(等价于数组默认迭代器,即[Symbol.iterator]()) -
entries():返回[index, value]键值对的迭代器,每个结果是长度为 2 的数组
示例:
const arr = ['a', 'b', 'c'];
for (const key of arr.keys()) {
console.log(key); // 0, 1, 2
}
for (const val of arr.values()) {
console.log(val); // 'a', 'b', 'c'
}
for (const entry of arr.entries()) {
console.log(entry); // [0, 'a'], [1, 'b'], [2, 'c']
}
// 也可解构使用:
for (const [i, v] of arr.entries()) {
console.log(`索引 ${i}: ${v}`);
}
Map 的 entries()、keys()、values()
Map 对象的这三个方法更符合“键值对集合”的语义:
-
keys():返回所有键的迭代器(插入顺序) -
values():返回所有值的迭代器(插入顺序) -
entries():返回[key, value]数组的迭代器(默认迭代器即entries(),所以for...of map等价于for...of map.entries())
示例:
const map = new Map([['x', 10], ['y', 20]]); for (const k of map.keys()) console.log(k); // 'x', 'y' for (const v of map.values()) console.log(v); // 10, 20 for (const [k, v] of map) console.log(k, v); // 'x' 10, 'y' 20(因默认用 entries)
Set 的 keys()、values() 和 entries()
Set 是唯一值集合,没有传统意义上的“键”,但为保持接口统一:
-
keys()和values()行为完全相同,都返回元素值的迭代器(因为 Set 中值即键) -
entries()返回[value, value]的迭代器(每个项是重复两次的同一值)
示例:
const set = new Set(['a', 'b']);
for (const v of set.values()) console.log(v); // 'a', 'b'
for (const k of set.keys()) console.log(k); // 'a', 'b'(和 values 一样)
for (const entry of set.entries()) {
console.log(entry); // ['a', 'a'], ['b', 'b']
}
手动调用 next() 获取迭代结果
所有这些方法返回的都是迭代器对象,可直接调用 next():
const arr = [10, 20];
const iter = arr.entries();
console.log(iter.next()); // { value: [0, 10], done: false }
console.log(iter.next()); // { value: [1, 20], done: false }
console.log(iter.next()); // { value: undefined, done: true }
注意:迭代器是一次性的,遍历结束后再次调用 next() 总是返回 {value: undefined, done: true};如需重用,应重新调用 entries() 等方法获取新迭代器。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











