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}
const set2 = new Set("hello");
console.log(set2); // Set(4) {"h", "e", "l", "o"}
// 배열의 중복 요소 제거
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]
// Set을 사용한 배열의 중복 요소 제거
const uniq = array => [...new Set(array)];
console.log(uniq([2, 1, 2, 3, 4, 3, 4])); // [2, 1, 3, 4]
const { size } = new Set([1, 2, 3, 3]);
console.log(size); // 3
const set = new Set([1, 2, 3]);
console.log(Object.getOwnPropertyDescriptor(Set.prototype."size"));
// {set: undefined, enumerable: false, configurable: true, get: f}
s.size = 10; // 변경되지않고 무시된다.
console.log(set.size); // 3
const set = new Set();
console.log(set); // Set(0) {}
set.add(1);
console.log(set); // Set(1) {1}
const set = new Set();
set.add(1).add(2);
console.log(set); // Set(2) {1, 2}
set.add(3).add(3).add(4);
console.log(set); // Set(4) {1, 2, 3, 4}
const set = new Set();
Set
.add(1)
.add("a")
.add(true)
.add(undefined)
.add(null)
.add({})
.add([])
.add(() => {});
console.log(set); // Set(8) {1, "a", true, undefined, null, {}, [], () => {}}
const set = new Set([1, 2, 3]);
console.log(set.has(2)); // true
console.log(set.has(4)); // false
const set = new Set([1, 2, 3]);
// 요소 2 삭제
set.delete(2);
console.log(set); // Set(2) {1, 3}
// 요소 1 삭제
set.delete(1);
console.log(set); // Set(1) {3}
// 만약 존재하지 않는 Set 객체의 요소를 삭제하려 하면 에러 없기 무시된다.
set.delete(2);
console.log(set); // Set(1) {3}
const set = new Set([1, 2, 3]);
set.delete(1).delete(2); // TypeError: set.delete(...).delete is not a function
const set = new Set([1, 2, 3]);
set.clear();
console.log(set); // Set(0) {}
구분 | 객체 | Map 객체 |
---|---|---|
key로 사용할 수 있는 값 | 문자열 또는 심벌 값 | 객체를 포함한 모든 값 |
이터러블(iterable) | X | O |
요소 개수 확인 | Object.keys(obj).length | map.size |
const map = new Map();
console.log(map); // Map(0) {}
const map1 = new Map([["key1", "value1"], ["key2", "value2"]]);
console.log(map1); // {"Key1" => "value1", "key2" => "value2"}
const map = new Map([["key1", "value1"], ["key1", "value2"]]);
console.log(map); // Map(1) {"key1" => "value2"}
const { size } = new Map([["key1", "value1"], ["key2", "value2"]]);
console.log(size); // 2
const map = new Map([["key1", "value1"], ["key2", "value2"]]);
console.log(Obejct.getOwnPropertyDescriptor(Map.prototype, 'size'));
// {set: undefined, enumerable: false, configurable: true, get: f}
map.size = 10; // size 프로퍼티에 숫자를 할당하여 Map 객체의 요소 개수를 변경할 수 없다.
console.log(map.size); // 2
const map = new Map();
console.log(map); // Map(0) {}
map.set("key1", "value1");
console.log(map); // Map(1) {"key1" => "value1"}
const map = new Map();
map
.set("key1", "value1")
.set("key2", "value2");
console.log(map); // Map(2) {"key1" => "value1", "key2" => "value2"}
...