-
Map, Set개발/Javascript 2022. 6. 6. 19:31
*복습 자료라서 뻔한 내용은 생략
Summary.
1. Map은 ES 2015 때 추가된 새로운 자료구조 (*Object와 다른 점은 아래)
+ 삽입 순서대로 iteration 됨
+ String, Symbol 외에도 Key로 설정 가능
+ size 함수로 size 값 바로 구할 수 있음
+ Object처럼 default key가 있지 않음
let sayings = new Map(); sayings.set('dog', 'woof'); sayings.set('cat', 'meow'); sayings.set('elephant', 'toot'); sayings.size; // 3 sayings.get('dog'); // woof sayings.get('fox'); // undefined sayings.has('bird'); // false sayings.delete('dog'); sayings.has('dog'); // false for (let [key, value] of sayings) { console.log(key + ' goes ' + value); } // "cat goes meow" // "elephant goes toot" sayings.clear(); sayings.size; // 0
2. Weak Map은 Key가 Weak Reference여서 GC 대상이고, Key List도 얻을 수 없는 자료구조
+ 쓰임새 (private information 저장용)
const privates = new WeakMap(); function Public() { const me = { // Private data goes here }; privates.set(this, me); } Public.prototype.method = function () { const me = privates.get(this); // Do stuff with private data in `me`... }; module.exports = Public;
3. Set도 삽입 순서대로 iteration 가능
+ Array는 느린 splice 연산으로 요소를 지워야하는데 Set은 값을 기준으로 바로 지울 수 있고 NaN element도 iteration 가능
+ Weak Set은 iteration 안되고, Object 타입만 저장가능하고, DOM tracking, 등에 쓰임
let mySet = new Set(); mySet.add(1); mySet.add('some text'); mySet.add('foo'); mySet.has(1); // true mySet.delete('foo'); mySet.size; // 2 for (let item of mySet) console.log(item); // 1 // "some text"
// Array 간 변환 Array.from(mySet); [...mySet2]; mySet2 = new Set([1, 2, 3, 4]);
Additional.
1. (다음에) Object 대신 Map을 사용할 만한 상황은?
+ 둘 차이점 감안해보면 알 수 있으려나
Reference.
'개발 > Javascript' 카테고리의 다른 글
Class (0) 2022.06.06 Object Model (0) 2022.06.06 Iterator / Generator / Iterable (0) 2022.06.06 Strict Mode (0) 2022.06.06 History (ECMAScript) (0) 2022.06.06