Set란 어떠한 자료형의 값이든 각 원소를 고유하게 저장하는 객체이다.
set에서 사용할 수 있는 메소드입니다.
const mySet = new Set(['foo', 'bar', 'baz']);
// add a new value to the Set
mySet.add('qux');
// check if a value is in the Set
console.log(mySet.has('foo')); // true
console.log(mySet.has('xyz')); // false
// get the size of the Set
console.log(mySet.size); // 4
// delete a value from the Set
mySet.delete('bar');
// iterate over the Set using a for...of loop
for (const value of mySet) {
console.log(value);
}
// output:
// foo
// baz
// qux
// clear all values from the Set
mySet.clear();
console.log(mySet.size); // 0
// add some values back to the Set
mySet.add('hello');
mySet.add('world');
// use the forEach() method to log each value to the console
mySet.forEach(function(value) {
console.log(value);
});
// output:
// hello
// world
// get an iterator for the Set's entries
const entries = mySet.entries();
console.log(entries.next().value); // [ 'hello', 'hello' ]
console.log(entries.next().value); // [ 'world', 'world' ]
// get an iterator for the Set's keys
const keys = mySet.keys();
console.log(keys.next().value); // 'hello'
console.log(keys.next().value); // 'world'
// get an iterator for the Set's values
const values = mySet.values();
console.log(values.next().value); // 'hello'
console.log(values.next().value); // 'world'
const myArray = [1, 2, 3, 1, 2, 4, 5, 4];
const uniqueArray = [...new Set(myArray)];
console.log(uniqueArray); // [1, 2, 3, 4, 5]
Set과 비슷하지만 weakSet의 경우 객체만 포함할 수 있다.
const myWeakSet = new WeakSet();
const obj1 = {foo: 'bar'};
const obj2 = {baz: 'qux'};
myWeakSet.add(obj1);
myWeakSet.add(obj2);
console.log(myWeakSet.has(obj1)); // true
console.log(myWeakSet.has(obj2)); // true
myWeakSet.delete(obj2);
console.log(myWeakSet.has(obj1)); // true
console.log(myWeakSet.has(obj2)); // false
맵은 Set과 유사하지만 키/값 쌍으로 이루어진다.
맵은 각 키가 고유해야 하는 키-값 쌍의 모음입니다.
맵의 키와 값은 개체 및 함수를 포함하여 모든 유형이 될 수 있습니다.
객체와 달리 맵은 반복 가능합니다. 즉, for...of 루프 또는 기타 반복 방법을 사용하여 맵의 키 또는 값을 반복할 수 있습니다.
맵에는 맵의 키-값 쌍 수를 반환하는 크기 속성이 있습니다.
set(), delete() 및 has()와 같은 메서드를 사용하여 Map에서 키-값 쌍을 추가, 제거 및 업데이트할 수 있습니다.
const myMap = new Map();
const key1 = 'foo';
const value1 = 'bar';
const key2 = {baz: 'qux'};
const value2 = function() { console.log('hello world'); };
myMap.set(key1, value1);
myMap.set(key2, value2);
console.log(myMap.has(key1)); // true
console.log(myMap.get(key1)); // 'bar'
console.log(myMap.has(key2)); // true
console.log(myMap.get(key2)); // [Function: value2]
console.log(myMap.size); // 2
myMap.delete(key1);
console.log(myMap.has(key1)); // false
console.log(myMap.size); // 1
for (const [key, value] of myMap) {
console.log(key, value);
}
// Output:
// { baz: 'qux' } [Function: value2]
WeakMap은 Map과 유사한 JavaScript의 내장 개체이지만 약한 참조 키-값 쌍을 저장할 수 있습니다.
WeakSet과 마찬가지로 WeakMap의 개체는 약하게 유지됩니다. 즉, 개체에 대한 다른 강력한 참조가 없으면 가비지 수집될 수 있습니다.
const myWeakMap = new WeakMap();
const key1 = {foo: 'bar'};
const value1 = 'hello world';
const key2 = {baz: 'qux'};
const value2 = function() { console.log('hello world'); };
myWeakMap.set(key1, value1);
myWeakMap.set(key2, value2);
console.log(myWeakMap.has(key1)); // true
console.log(myWeakMap.get(key1)); // 'hello world'
console.log(myWeakMap.has(key2)); // true
console.log(myWeakMap.get(key2)); // [Function: value2]
myWeakMap.delete(key1);
console.log(myWeakMap.has(key1)); // false