SetSet객체는 중복되지 않는 유일한 값들의 집합니다. 배열과 유사하지만 동일한 값을 포함할 수 없으며, 요소 순서의 의미가 없고, 인덱스로 요소에 접근할 수 없다. 이런 Set 객체의 특성은 수학적 집합의 특성과 일치한다. Set 객체의 생성Set 객체는 Set 생성자 함수를 이용해 생성한다.const set = new Set();console.log(set); // Set(0) {} Set 생성자 함수는 이터러블을 인수로 받아 Set 객체를 생성하며 이터러블의 중복된 값은 Set 객체에 요소로 저장되지 않는다.const set1 = new Set([1, 2, 3, 3]);console.log(set1); // Set(3) {1, 2, 3}const set2 = new Set('hello');cons..
이터러블
디스트럭처링 할당(구조 분해 할당)은 구조화된 배열과 같은 이터러블 또는 객체를 1개 이상의 변수에 개별적으로 할당하는 것을 말한다. 배열 디스트럭처링 할당// ES5var arr = [1, 2, 3];var one = arr[0];var two = arr[1];var three = arr[2];console.log(one, two, three); // 1 2 3 구조 분해 할당의 대상은 이터러블이어야 하며, 할당 기준은 배열의 인덱스다.const arr = [1, 2, 3];// ES6 배열 디스트럭처링 할당// 변수 one, two, three를 선언하고 배열 arr을 디스트럭처링하여 할당한다.// 이때 할당 기준은 배열의 인덱스다.const [one, two, three] = arr;cons..
ES6에 도입된 스프레드 문법 ... 은 하나로 뭉쳐있는 여러 값들의 집합을 펼처서 개별적인 값들의 목록으로 만든다. 스프레드 문법은 Array, String, Map, Set, DOM 컬렉션, arguments와 같이 for...of 문으로 순회할 수 있는 이터러블에 한정된다.// ...[1, 2, 3]은 [1, 2, 3]을 개별 요소로 분리한다(→ 1, 2, 3)console.log(...[1, 2, 3]); // 1 2 3// 문자열은 이터러블이다.console.log(...'Hello'); // H e l l o// Map과 Set은 이터러블이다.console.log(...new Map([['a', '1'], ['b', '2']])); // [ 'a', '1' ] [ 'b', '2' ]consol..
이터레이션 프로토콜ES6에 도입된 이터레이션 프로토콜은 순회 가능한 데이터 컬랙션을 만들기 위해 ECMAScript 사양에 정의하여 미리 약속한 규칙이다. ES6 이전의 순회 가능한 배열, 문자열, 유사 배열 객체, DOM 컬랙션 등은 통일된 규약 없이 나름의 구조를 갖고 for 문, for...in 문, forEach 메서등 등 다양한 방법으로 순회할 수 있었다. 하지만 ES6에서는 순회 가능한 데이터 컬랙션을 이터레이션 프로토콜을 준수하는 이터러블로 통일해 for...of문, 스프레드 문법, 배열 디스트럭처링 할당(분해 할당)의 대상으로 사용할 수 있도록 일원화했다. 이터러블이터러블 프로토콜을 준수한 객체를 이터러블이라 하며 Symbol.iterator를 프로퍼티 키로 사용한 메서드를 구현하거나, 프..