string.@@iterator

The [@@interator]() method๋Š” String value์˜ code point๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” new Iterator object๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๊ฐ code point๋ฅผ string value๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๐Ÿง

const str = "๋‰ธ๋‰ด๋ƒ”๋ƒ๋ƒ๋ƒ ์ฝ”๋กœ๋‚˜๋กœ ์œ ํŠœ๋ธŒ์— ์˜คํŽ˜๋ผ์˜ ์œ ๋ น ๋ฌด๋ฃŒ๋กœ ํ’€๋ฆผ";

let iterator = str[Symbol.iterator](); // StringIterator {}
let theChar = iterator.next(); // {value: "๋‰ธ", done: false}

while(!theChar.done && theChar.value !== ' ') {
  console.log(theChar.value);
  theChar = iterator.next();
    // expected output: "๋‰ธ"
    // "๋‰ด"
    // "๋ƒ”"
    // "๋ƒ"
}

next() ๋ฉ”์†Œ๋“œ๋Š” value๋กœ done(boolean)๊ณผ value๋ฅผ ๊ฐ€์ง„๋‹ค.

Syntax

str[Symbol.iterator]

Return value

new Iterator Object

Examples

Using [@@iterator]()

surrogate pair(UTF-16 ์ฝ”๋“œ ๋‘๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ๊ธ€์ž๋ฅผ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ)๋•Œ๋„ ์•ˆ๊นจ์ง€๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

const str = 'A\uD835\uDC68';

let strIter = str[Symbol.iterator]();

console.log(strIter.next().value); // "A"
console.log(strIter.next().value); // ๐‘จ (\uD835\uDC68)

Using [@@iterator]() with for..of

for..of ๊ตฌ๋ฌธ์€ ์ปฌ๋ ‰์…˜ ์ „์šฉ [Symbol.iterator]์†์„ฑ์ด ์žˆ๋Š” ๋ชจ๋“  ์ปฌ๋ ‰์…˜ ์š”์†Œ์— ๋Œ€ํ•ด ์ด ๋ฐฉ์‹์œผ๋กœ ๋ฐ˜๋ณตํ•œ๋‹ค.

let iterable = 'A\uD835\uDC68B\uD835\uDC69C\uD835\uDC6A';

for (let i of iterable) {
  console.log(i); //logs A, ๐‘จ, B, ๐‘ฉ, C, ๐‘ช
}

Browser compatibillity: IE, Opera, Safari์—์„œ No

Last updated

Was this helpful?