Array.prototype.keys()

基线 广泛可用

此功能已得到充分确立,可在许多设备和浏览器版本上运行。自以下日期起,它已在所有浏览器中可用: 2018 年 5 月.

keys()Array 实例的一种方法,它返回一个新的数组迭代器对象,其中包含数组中每个索引的键。

试一试

语法

js
keys()

参数

无。

返回值

一个新的 可迭代迭代器对象

描述

当在 稀疏数组 上使用时,keys() 方法会迭代空插槽,就好像它们的值为 undefined 一样。

keys() 方法是 泛型的。它只期望 this 值具有 length 属性和整数键属性。

示例

在稀疏数组上使用 keys()

Object.keys() 不同,后者仅包含数组中实际存在的键,keys() 迭代器不会忽略表示缺少属性的空洞。

js
const arr = ["a", , "c"];
const sparseKeys = Object.keys(arr);
const denseKeys = [...arr.keys()];
console.log(sparseKeys); // ['0', '2']
console.log(denseKeys); // [0, 1, 2]

在非数组对象上调用 keys()

keys() 方法读取 thislength 属性,然后生成 0 到 length - 1 之间的所有整数索引。不会实际发生索引访问。

js
const arrayLike = {
  length: 3,
};
for (const entry of Array.prototype.keys.call(arrayLike)) {
  console.log(entry);
}
// 0
// 1
// 2

规范

规范
ECMAScript 语言规范
# sec-array.prototype.keys

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅