const set = new Set();
console.log(set); // Set(0) {}
const set1 = new Set([1, 2, 3, 3]);
console.log(set1); // Set(3) {1, 2, 3}
1. filter 함수 활용
const uniq = array => array.filter((v, i, self) => self.indexOf(v) === i);
console.log(uniq([2, 1, 2, 3, 4, 3, 4]); // [2, 1, 3, 4]
2. Set 객체 활용
const uniq = array => [...new Set(array)];
console.log(uniq([2, 1, 2, 3, 4, 3, 4]); // [2, 1, 3, 4]
Set.prototype.add
메서드 사용add
메서드는 새로운 요소가 추가된 Set 객체 반환 -> 메서드 체이닝 가능const set = new Set();
set.add(1).add(2);
console.log(set); // Set(2) {1, 2}
console.log(NaN === NaN); // false
console.log(0 === -0); // true
const set = new Set();
set.add(NaN).add(NaN).add(0).add(-0);
console.log(set); // Set(2) {NaN, 0}
Set.prototype.has
메서드 사용Set.prototype.delete
메서드 사용Set.prototype.clear
메서드 사용Set.prototype.forEach
메서드 사용Array.prototype.forEach
와 유사Array.prototype.forEach
와 인터페이스 통일의 목적for ... of
문 사용 가능, 스프레드 문법, 배열 디스트럭처링 할당 가능const map = new Map();
console.log(map); // Map(0) {}
const map1 = new Map([['key1', 'value1'], ['key2', 'value2']]);
console.log(map1); // Map(2) {"key1" => "value1", "key2" => "value2"}
Map.prototype.size
프로퍼티 사용Map.prototype.set
메서드 사용const map = new Map();
map.set('key1', 'value1').set('key2', 'value2');
console.log(map1); // Map(2) {"key1" => "value1", "key2" => "value2"}
const map = new Map();
const lee = {name: 'Lee'};
map.set(lee, 'developer');
console.log(map); // Map(1) {name: "Lee"} => "developer" }
Map.prototype.get
메서드 사용const map = new Map();
const lee = {name: 'Lee'};
map.set(lee, 'developer');
console.log(map.get(lee)); // developer
Map.prototype.has
메서드 사용Map.prototype.delete
메서드 사용Map.prototype.clear
메서드 사용Map.prototype.forEach
메서드 사용
- Array.prototype.forEach
와 유사
- 첫 번째 인수: 현재 순회 중인 요소 키
- 두 번째 인수: 현재 순회 중인 요소 값
- 세 번째 인수: 현재 순회 중인 Map 객체 자체
for ... of
문 사용 가능, 스프레드 문법, 배열 디스트럭처링 할당 가능
-> Map 객체가 이터러블이기에 가능
원래 Map 객체는 요소의 순서에 의미가 없으나, 순회하는 순서는 요소가 추가된 순서
-> 다른 이터러블의 순회와 호환성을 유지하기 위해
이터러블이면서 동시에 이터레이터인 객체를 반환하는 메서드 제공
- Map.prototype.keys
- Map.prototype.values
- Map.prototype.entries
const lee = {name: 'Lee'};
const kim = {name: 'Kim'};
const map = new Map([[lee, 'developer'], [kim, 'designer']]);
for(const key of map.keys()) {
console.log(key); // {name: "Lee"} {name: "Kim"}
}
for(const value of map.values()) {
console.log(value); // developer designer
}
for(const entry of map.entries()) {
console.log(entry); // [{name: "Lee"}, "developer"] [{name: "Kim"}, "designer"]
}