0%

Set을 사용한 교집합, 합집합, 차집합, 상위

1.Set의 사용한 교집합 , 합집합 , 차집합 , 상위

Set은 중복값을 제외한 유일한 값을 저장한다. 그렇기에 교집합, 합집합 , 차집합, 상위 등을 나타내는데 사용하기 에 용이하다.

1.1. 교집합

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//첫번째 방법
Set.prototype.intersaction = function (set){
const result = new Set();
for(const value of set){
if(this.has(value))
result.add(value)
}
return result;
}
const setA = new Set([1,2,3,4]);
const setB = new Set([2,4]);

console.log(setA.intersaction(setB)) // [2,4];

//두번째 방법
Set.prototype.intersaction = function (set){
return [...this].filter(v=> set.has(v));
}
const setA = new Set([1,2,3,4]);
const seB = new Set([2,4]);

console.log(setA.intersaction(setB)) // [2,4];

1.2. 합집합

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//첫번째 방법

Set.prototype.union = function (set){
const result = new Set(this);
for(const value of set){
result.add(value);
}
return result;
}
const setA = new Set([1,2,3,4]);
const setB = new Set([2,4]);
console.log(setA.union(setB)) //[1,2,3,4];

// 두번째 방법

Set.prototype.union = function (set){
const result = new Set([...this,...set])
return result;
}

const setA = new Set([1,2,3,4]);
const setB = new Set([2,4]);
console.log(setA.union(setB)) //[1,2,3,4];

1.3 차집합

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//첫번째 방법
Set.prototype.differnce = function (set){
const result = new Set(this);
for(const value of set){
result.delete(value);
}
}
return result;
}
const setA = new Set([1,2,3,4]);
const setB = new Set([2,4]);
console.log(setA.difference(setB)) //[1,3];

//두번째 방법

Set.prototype.difference = function (set){
return [...this].filter(v=> !set.has(v));
}
const setA = new Set([1,2,3,4]);
const setB = new Set([2,4]);

consoel.log(setA.differnce(setB)) //[1,3];

1.4. 상위

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//첫번째 방법
Set.prototype.isSuperset = function (set){
for(const value of subset){
if(!this.has(value))return false;
}
return true;
}
const setA = new Set([1,2,3,4]);
const setB = new Set([2,4]);

console.log(setA.isSuperset(setB)) // true;

//두번째 방법
Set.prototype.isSuperset = function (set){
const superArr = [...this];
return [...superArr].every(v => superArr.includes(v));
}

const setA =new Set([1,2,3,4]);
const setB = new Set([2,4]);

console.log(setA.isSuperset(setB)) // true;