- Set operations with JavaScript
- 자바스크립트 집합 연산
- JavaScript 합집합, 교집합, 차집합, 대칭차
1 합집합[ | ]
JavaScript
Copy
function union(a, b) {
var tmp={}, res=[];
for(var i=0;i<a.length;i++) tmp[a[i]]=1;
for(var i=0;i<b.length;i++) tmp[b[i]]=1;
for(var k in tmp) res.push(k);
return res;
}
2 교집합[ | ]
JavaScript
Copy
function intersect(a, b) {
var tmp={}, res=[];
for(var i=0;i<a.length;i++) tmp[a[i]]=1;
for(var i=0;i<b.length;i++) if(tmp[b[i]]) res.push(b[i]);
return res;
}
3 차집합[ | ]
JavaScript
Copy
function array_diff(a, b) {
var tmp={}, res=[];
for(var i=0;i<a.length;i++) tmp[a[i]]=1;
for(var i=0;i<b.length;i++) { if(tmp[b[i]]) delete tmp[b[i]]; }
for(var k in tmp) res.push(k);
return res;
}
4 대칭차[ | ]
JavaScript
Copy
function sym_diff(a, b) {
var tmp={}, res=[];
for(var i=0;i<a.length;i++) tmp[a[i]]=1;
for(var i=0;i<b.length;i++) { if(tmp[b[i]]) delete tmp[b[i]]; else tmp[b[i]]=1; }
for(var k in tmp) res.push(k);
return res;
}
5 실행 예시[ | ]
JavaScript
Copy
function union(a, b) {
var tmp={}, res=[];
for(var i=0;i<a.length;i++) tmp[a[i]]=1;
for(var i=0;i<b.length;i++) tmp[b[i]]=1;
for(var k in tmp) res.push(k);
return res;
}
function intersect(a, b) {
var tmp={}, res=[];
for(var i=0;i<a.length;i++) tmp[a[i]]=1;
for(var i=0;i<b.length;i++) if(tmp[b[i]]) res.push(b[i]);
return res;
}
function array_diff(a, b) {
var tmp={}, res=[];
for(var i=0;i<a.length;i++) tmp[a[i]]=1;
for(var i=0;i<b.length;i++) { if(tmp[b[i]]) delete tmp[b[i]]; }
for(var k in tmp) res.push(k);
return res;
}
function sym_diff(a, b) {
var tmp={}, res=[];
for(var i=0;i<a.length;i++) tmp[a[i]]=1;
for(var i=0;i<b.length;i++) { if(tmp[b[i]]) delete tmp[b[i]]; else tmp[b[i]]=1; }
for(var k in tmp) res.push(k);
return res;
}
var arr1 = ['A', 'B', 'C', 'D'];
var arr2 = ['C', 'D', 'E', 'F'];
// Union
console.log( union(arr1, arr2) );
// ["A", "B", "C", "D", "E", "F"]
// Intersection
console.log( intersect(arr1, arr2) );
// ["C", "D"]
// Complement
console.log( array_diff(arr1, arr2) );
// ["A", "B"]
// Symmetric difference
console.log( sym_diff(arr1, arr2) );
// ["A", "B", "E", "F"]
▶ | ["A", "B", "C", "D", "E", "F"] |
▶ | ["C", "D"] |
▶ | ["A", "B"] |
▶ | ["A", "B", "E", "F"] |
6 같이 보기[ | ]
7 참고[ | ]
편집자 1.215.44.91 Jmnote bot Jmnote
로그인하시면 댓글을 쓸 수 있습니다.