JavaScript中数组的keys()方法返回一个数组索引的迭代器,逐个产出从0开始的整数索引,而非字符串键名;它仅包含数字索引,不包含非数字属性,可用for...of、扩展运算符或Array.from()遍历或转换为数组。

JavaScript 中数组的 keys() 方法返回一个**数组索引的迭代器**,不是“键名”(因为数组没有传统意义上的字符串键名,只有数字索引),它逐个产出从 0 开始的整数索引。
keys() 返回的是索引迭代器,不是键名
数组是基于数字索引的有序集合,它的“键”就是索引(0, 1, 2, ...),不是对象那样的字符串属性名。所以 arr.keys() 实际返回的是一个可遍历的 Array Iterator,每次调用 next() 得到形如 { value: 0, done: false } 的对象。
-
[10, 20, 30].keys()产出:0 → 1 → 2 - 它不会产出
"0"字符串,也不会产出数组可能拥有的额外属性(比如arr.foo = "bar")
常用用法:for...of 遍历索引
最简洁的方式是配合 for...of 直接获取每个索引:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
const arr = ['a', 'b', 'c'];
for (const index of arr.keys()) {
console.log(index); // 输出:0, 1, 2
}
转成数组或展开使用
如果需要一次性拿到所有索引,可以用扩展运算符或 Array.from():
立即学习“Java免费学习笔记(深入)”;
-
[...arr.keys()]→[0, 1, 2] -
Array.from(arr.keys())→[0, 1, 2] - 也可用于构造新数组:
Array.from(arr.keys(), i => `item-${i}`)→["item-0", "item-1", "item-2"]
注意和 Object.keys() 的区别
Object.keys() 返回对象自身可枚举属性的字符串键名(如 ["prop1", "prop2"]),而 Array.prototype.keys() 只返回纯数字索引,且**不包含非数字属性**:
const arr = ['x', 'y']; arr.custom = 'ignored'; console.log([...arr.keys()]); // [0, 1] console.log(Object.keys(arr)); // ["0", "1", "custom"]不复杂但容易忽略:数组的 keys 是索引序列,不是键名映射,别把它当成 Object.keys 的数组版。

















