Algorithm/Baekjoon(Node.js)

[JavaSrcipt] for...of (반복가능객체)

비망노트 2021. 10. 22. 22:46

✅ for ..of

for...of 명령문은 반복가능한 객체 (Array, Map, Set, String, TypedArray, arguments 객체 등을 포함)에 대해서

반복하고 각 개별 속성값에 대해 실행되는 문이 있는 사용자 정의 반복 후크를 호출하는 루프를 생성합니다.

const array1 = ['a', 'b', 'c'];

for (const element of array1) {
  console.log(element);
}

// expected output: "a"
// expected output: "b"
// expected output: "c"

구문

for (variable of iterable) {
  statement
}

variable
각 반복에 서로 다른 속성값이 variable에 할당됩니다.
iterable
반복되는 열거가능(enumerable)한 속성이 있는 객체.

 

❗ Array에 대해 반복

let iterable = [10, 20, 30];

for (let value of iterable) {
  console.log(value);
}
// 10
// 20
// 30

❗❗ String에 대해 반복

let iterable = "boo";

for (let value of iterable) {
  console.log(value);
}
// "b"
// "o"
// "o"

❗❗❗ Map에 대해 반복

let iterable = new Map([["a", 1], ["b", 2], ["c", 3]]);

for (let entry of iterable) {
  console.log(entry);
}
// [a, 1]
// [b, 2]
// [c, 3]

for (let [key, value] of iterable) {
  console.log(value);
}
// 1
// 2
// 3

 

[key, value] 처럼 배열의값을 나누어 위처럼 출력 할 수 있다.

 

❗ Set에 대해 반복

let iterable = new Set([1, 1, 2, 2, 3, 3]);

for (let value of iterable) {
  console.log(value);
}
// 1
// 2
// 3

 

✅ for...of 와 for...in의 차이

 

for...in 루프는 객체의 모든 열거가능한 속성에 대해 반복합니다.

for...of 구문은 컬렉션 전용입니다.

모든 객체보다는, [Symbol.iterator] 속성이 있는 모든 컬렉션 요소에 대해 이 방식으로 반복합니다.

다음 예는 for...of 루프와 for...in 루프의 차이를 보입니다.

Object.prototype.objCustom = function () {};
Array.prototype.arrCustom = function () {};

let iterable = [3, 5, 7];
iterable.foo = "hello";

for (let i in iterable) {
  console.log(i); // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
}

for (let i of iterable) {
  console.log(i); // logs 3, 5, 7
}

 

 

 

 

-출처

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/for...of#dom_%EC%BB%AC%EB%A0%89%EC%85%98%EC%97%90_%EB%8C%80%ED%95%B4_%EB%B0%98%EB%B3%B5