-
34_Iterable모던 자바스크립트 딥 다이브 독학 2023. 12. 3. 15:29
이터러블 프로토콜을 준수한 객체를 이터러블이라 한다. 이터러블은 for…of 문으로 순회할 수 있으며 스프레드 문법과 배열 디스트럭처링 할당의 대상으로 사용할 수 있다. (배열, 문자열, Map, Set 등)
이터레이터 프로토콜을 준수한 객체를 이터레이터라 한다. 이터레이터는 이터러블의 요소를 탐색하기 위한 포인터 역할을 한다. 이터러블의 Symbol.iterator 메서드가 반환한 이터레이터는 next 메서드를 갖는다.
const array = [1, 2, 3]; const iterator = array[Symbol.iterator](); // Symbol.iterator 메서드는 이터레이트를 반환 console.log('next' in iterator); // true
일반 객체는 for…of 문으로 순회할 수 없으며 스프레드 문법과 배열 디스트럭처링 할당의 대상으로 사용할 수 없다.
빌트인 이터러블
Array, String, Map, Set, TypedArray, arguments, DOM 컬렉션
for…of문
for (변수 선언문 of 이터러블) { ... }
이터러블과 유사 배열 객체
유사 배열 객체는 이터러블이 아닌 일반 객체이므로 Symbol.iterator 메서드가 없기 때문에 for…of 문으로 순회할 수 없다.
const arrayLike = { // 유사 배열 객체 0: 1, 1: 2, 2: 3, length: 3 };
단, arguments, NodeList, HTMLCollection은 유사 배열 객체이면서 이터러블이다.
Array.from 메서드를 사용하여 이터러블이 아닌 유사 배열 객체나 이터러블을 배열로 변환한다.
'모던 자바스크립트 딥 다이브 독학' 카테고리의 다른 글
36_Destructuring (1) 2023.12.08 35_Spread Syntax (0) 2023.12.07 33_Symbol (0) 2023.11.30 32_String (0) 2023.11.23 31_RegExp (0) 2023.11.22