set
1. 모든 값이 고유하다.(데이터가 중복될 수 없다)
2. 인덱스를 사용하지 않는다.
3. undefined와 NaN도 저장할 수 있다.
생성하는 방법 : new Set
예제 )
let set1 = new Set([1, 2, 2, 3]);
console.log(set1); // Set(3) { 1, 2, 3 }
이미 값이 있는 경우 추가도 되지 않는다.
let set1 = new Set([1, 2, 2, 3]);
console.log(set1); // Set(3) { 1, 2, 3 }
set1.add(1);
console.log(set1);
없는 값인 경우 삭제되지 않는다.
let set1 = new Set([1, 2, 2, 3]);
console.log(set1); // Set(3) { 1, 2, 3 }
// 삭제
set1.delete(6);
console.log(set1);
전부삭제 기능
let set1 = new Set([1, 2, 2, 3]);
console.log(set1); // Set(3) { 1, 2, 3 }
// 전부 삭제
set1.clear();
console.log(set1); // {}나옴
set은 이터레이터고 for of를 사용할 수 있다
let set2 = new Set([1, 2, 2, 3]);
console.log(set2); // Set(3) { 1, 2, 3 }
console.log(Symbol.iterator in set2); // true
for (const value of set2) {
console.log(value);
}
스프레드 연산자도 사용할 수 있다
let set2 = new Set([1, 2, 2, 3]);
console.log([...set2]); //[1,2,3]
값을 가지고있니? 를 쓰기위해 has를 쓸 수 있다.
배열은 못쓰고 has만이 쓸 수 있는 것임!
let set2 = new Set([1, 2, 2, 3]);
console.log([...set2]); //[1,2,3]
console.log(set2) //Set(3) { 1, 2, 3 }
console.log(set2.has(6)) // false
String에도 사용할 수 있다
let set2 = new Set('hello');
console.log(set2); // Set(4) { 'h', 'e', 'l', 'o' }
스프레드 연산자를 쓸 수도 있다
let array = [2, 1, 2, 3, 4, 3, 4];
let set3 = new Set(array);
console.log('set3 =', set3);
const uniq2 = [...new Set(array)]; //set3 = Set(4) { 2, 1, 3, 4 }
console.log(uniq2); // [2,1,3,4]
setA와 setB가있는데 같은 요소를 갖는 것을 필터로 여과해보기
set의 교집합 구현하기1.
// 교집합 intersection
const setA = new Set([1, 2, 3, 4]);
const setB = new Set([2, 4]);
function findIntersection(set1, set2) {
return [...set1].filter((item) => set2.has(item));
}
console.log(findIntersection(setA, setB)); //[2, 4]
set의 교집합 구현하기2. (set으로 주고싶은경우!)
// 교집합 intersection
const setA = new Set([1, 2, 3, 4]);
const setB = new Set([2, 4]);
function findIntersection(set1, set2) {
return new Set([...set1].filter((item) => set2.has(item)));
}
console.log(findIntersection(setA, setB)); //Set(2) { 2, 4 }
차집합 구현하기
// 교집합 intersection
const setA = new Set([1, 2, 3, 4]);
const setB = new Set([2, 4]);
// 차집합 difference
function findDifference(set1, set2) {
return [...set1].filter((item) => !set2.has(item));
}
console.log(findDifference(setA, setB));
'Javascript' 카테고리의 다른 글
HTTP request, response, CSR, SSR, FETCH API (1) | 2022.10.11 |
---|---|
Map에 대하여 (0) | 2022.10.07 |
널병합연산자 ?? (0) | 2022.10.07 |
옵셔널체이닝 연산자 ?. (0) | 2022.10.07 |
논리 연산자 단축평가 || 와 && (0) | 2022.10.07 |