Array.prototype[Symbol.iterator]()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2016å¹´9æ.
[Symbol.iterator]() 㯠Array ã¤ã³ã¹ã¿ã³ã¹ã®ã¡ã½ããã§ãå復å¯è½ãããã³ã«ãå®è£
ãã¦ãããã¹ãã¬ããæ§æã for...of ã«ã¼ãã®ãããªå復å¯è½ãªãã¸ã§ã¯ããæå¾
ããã»ã¨ãã©ã®æ§æã§é
åãå©ç¨ãããã¨ãã§ãã¾ããé
åã®åã¤ã³ããã¯ã¹ã®å¤ãè¿ãé
åã¤ãã¬ã¼ã¿ã¼ãªãã¸ã§ã¯ããè¿ãã¾ãã
ãã®ããããã£ã®åæå¤ã¯ Array.prototype.values ããããã£ã®åæå¤ã¨åã颿°ãªãã¸ã§ã¯ãã§ãã
試ãã¦ã¿ã¾ããã
const array = ["a", "b", "c"];
const iterator = array[Symbol.iterator]();
for (const value of iterator) {
console.log(value);
}
// äºæ³ãããçµæ: "a"
// äºæ³ãããçµæ: "b"
// äºæ³ãããçµæ: "c"
æ§æ
array[Symbol.iterator]()
弿°
ãªãã
è¿å¤
Array.prototype.values() ã®è¿å¤ã¨åãã§ããããã¯é
åå
ã®ãã¹ã¦ã®ã¤ã³ããã¯ã¹ã®å¤ãçæããæ°ããå復å¯è½ã¤ãã¬ã¼ã¿ã¼ãªãã¸ã§ã¯ãã§ãã
ä¾
>for...of ã«ã¼ããç¨ããå復å¦ç
ãã®ã¡ã½ãããç´æ¥å¼ã³åºãå¿
è¦ã¯ã»ã¨ãã©ãªããã¨ã«æ³¨æãã¦ãã ããã [Symbol.iterator]() ã¡ã½ãããåå¨ãããã¨ã§ãé
åãå復å¦çå¯è½ã«ãããã¨ãã§ãã for...of ã«ã¼ãã®ãããªå復å¦çæ§æã§ã¯ãèªåçã«ãã®ã¡ã½ãããå¼ã³åºãã¦ãã«ã¼ãããã¤ãã¬ã¼ã¿ã¼ãåå¾ãã¾ãã
HTML
<ul id="letterResult"></ul>
JavaScript
const arr = ["a", "b", "c"];
const letterResult = document.getElementById("letterResult");
for (const letter of arr) {
const li = document.createElement("li");
li.textContent = letter;
letterResult.appendChild(li);
}
çµæ
ã¤ãã¬ã¼ã¿ã¼ãæåã§æç¹°ã
è¿ãããã¤ãã¬ã¼ã¿ã¼ãªãã¸ã§ã¯ãã® next() ã¡ã½ãããæåã§å¼ã³åºããã¨ã§ãå復å¦çãæå¤§éã«å¶å¾¡ãããã¨ãã§ãã¾ãã
const arr = ["a", "b", "c", "d", "e"];
const arrIter = arr[Symbol.iterator]();
console.log(arrIter.next().value); // a
console.log(arrIter.next().value); // b
console.log(arrIter.next().value); // c
console.log(arrIter.next().value); // d
console.log(arrIter.next().value); // e
æååã¨æååé åãåã颿°ã§å¦ç
æååã¨é
åã¯ã©ã¡ããã¤ãã¬ã¼ã¿ã¼ãããã³ã«ãå®è£
ãã¦ããã®ã§ãæ±ç¨é¢æ°ã¯ä¸¡æ¹ã®å
¥åãåãæ¹æ³ã§å¦çããããã«è¨è¨ãããã¨ãã§ãã¾ããããã¯ã Array.prototype.values() ãç´æ¥å¼ã³åºããããåªãã¦ãããå
¥åãé
åã§ããããå°ãªãã¨ããã®ãããªã¡ã½ãããæã¤ãªãã¸ã§ã¯ãã§ãããã¨ãè¦æ±ããã¾ãã
function logIterable(it) {
if (typeof it[Symbol.iterator] !== "function") {
console.log(it, "is not iterable.");
return;
}
for (const letter of it) {
console.log(letter);
}
}
// Array
logIterable(["a", "b", "c"]);
// a
// b
// c
// String
logIterable("abc");
// a
// b
// c
// Number
logIterable(123);
// 123 is not iterable.
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype-%symbol.iterator%> |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
Array.prototype[Symbol.iterator]ã®ããªãã£ã« (core-js)- ã¤ã³ããã¯ã¹ä»ãã³ã¬ã¯ã·ã§ã³ã¬ã¤ã
ArrayArray.prototype.keys()Array.prototype.entries()Array.prototype.values()TypedArray.prototype[Symbol.iterator]()String.prototype[Symbol.iterator]()Symbol.iterator- å復å¦çãããã³ã«