본문 바로가기
Javascript

set에 대하여

by jennyiscoding 2022. 10. 7.

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