Skip to content

Latest commit

 

History

History
114 lines (68 loc) · 3.34 KB

File metadata and controls

114 lines (68 loc) · 3.34 KB

14. Keyed collections

  • 키로 인덱싱되는 데이터의 collection이다.

    • Map
    • Set
  • 데이터는 삽입된 순서로 반복가능하다.

14.1 Maps

  • ECMAScript2015에서 도입
  • Map 객체는 간단한 key와 value의 map이며 삽입 순서대로 반복할 수 있다.
let cats = new Map();
cats.set('umi', 'white');
cats.set('garfield', 'orange');
cats.set('hellokitty', 'white');

cats.size;				// 3

cats.get('umi');		// white
cats.get('a');			// undefined
cats.has('garfield');	// true
cats.delete('hellokitty');

for (let [key, value] of cats) console.log(key + ': ' + value);
for (let color of cats) console.log(color);

cats.clear();
cats.size;		// 0

14.1.1 객체와 map의 차이점

  • 객체는 문자열과 값을 map하기 위해 쓰인다.
  • Map 객체는 객체보다 더 많은 기능을 제공한다.
객체 키가 될 수 있는 값 데이터의 개수 반복가능 프로로타입
Object String 혹은 Symbol 직접 순회해야 함. 직접 순회해야 함 프로토타입을 가짐
Map 모든 값 size 프로퍼티 삽입 순서대로 가능

14.1.2 WeakMap 객체(수정중)

  • WeakMap 객체는 키가 전부 객체이고 값은 임의의 값이 될 수 있는 key/value 쌍의 collection이다.

14.2 Sets

  • Set 객체는 고유한 값들의 collection이다.
  • 삽입 순서대로 반복가능하다.
let mySet = new set();
mySet.add(1);
mySet.add(3);

mySet.has(1);	// true
mySet.delete('3');
mySet.size;		// 1

for (let item of mySet) console.log(item);

14.2.1 배열과 Set 변환하기

// Set 객체 배열로 변환하기
Array.from(mySet);
[...mySet];

// 배열을 Set 객체로 변환하기
let mySet = new Set([ 1, 2, 1 ]);

14.2.2 배열과 Set 비교하기

객체 요소 삭제 시간 요소 삭제하기 요소의 값
Set 값으로 삭제한다. 각 값은 모두 고유하여 중복되지 않는다.
Array 느리다 인덱스를 바탕으로 splice를 사용한다. 중복된 값이 가능하다.

14.2.3 WeakSet object

  • WeakSet 객체는 값이 전부 객체이고 고유한 collection이다.
객체 weak 열거가능
Set 모든 값 가능 가능
WeakSet 객체만 가능 WeakSet 객체 안의 모든 객체에 대한 참조가 없으면 가비지 콜렉터로 처리됨. 불가능

14.3 Map과 Set의 키와 값 동등성

  • Map 객체의 키 동등성과 Set 객체의 값 동등성은 same value zero 알고리즘을 바탕으로 한다.
    • 동등성은 일치 비교 연산자(===)로 수행된다.
    • -0+0은 동등하다.
    • NaN은 그 자신과만 동등하다.