ๆญค้กต้ข็”ฑ็คพๅŒบไปŽ่‹ฑๆ–‡็ฟป่ฏ‘่€Œๆฅใ€‚ไบ†่งฃๆ›ดๅคšๅนถๅŠ ๅ…ฅ MDN Web Docs ็คพๅŒบใ€‚

View in English Always switch to English

Array.prototype.keys()

Baseline Widely available

This feature is well established and works across many devices and browser versions. Itโ€™s been available across browsers since โจ2015ๅนด7ๆœˆโฉ.

keys() ๆ–นๆณ•่ฟ”ๅ›žไธ€ไธชๆ–ฐ็š„ๆ•ฐ็ป„่ฟญไปฃๅ™จๅฏน่ฑก๏ผŒๅ…ถไธญๅŒ…ๅซๆ•ฐ็ป„ไธญๆฏไธช็ดขๅผ•็š„้”ฎใ€‚

ๅฐ่ฏ•ไธ€ไธ‹

const array1 = ["a", "b", "c"];
const iterator = array1.keys();

for (const key of iterator) {
  console.log(key);
}

// Expected output: 0
// Expected output: 1
// Expected output: 2

่ฏญๆณ•

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() ๆ–นๆณ•่ฏปๅ– this ็š„ length ๅฑžๆ€ง๏ผŒ็„ถๅŽ็”Ÿๆˆ 0 ๅˆฐ length - 1 ไน‹้—ด็š„ๆ‰€ๆœ‰ๆ•ดๆ•ฐ็ดขๅผ•ใ€‚ๅฎž้™…ๅนถไธไผš่ฎฟ้—ฎ็ดขๅผ•ใ€‚

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

่ง„่Œƒ

Specification
ECMAScriptยฎ 2026 Language Specification
# sec-array.prototype.keys

ๆต่งˆๅ™จๅ…ผๅฎนๆ€ง

ๅ‚่ง