JavaScript 합집합, 교집합, 차집합, 대칭차

Jmnote bot (토론 | 기여)님의 2015년 7월 15일 (수) 01:07 판 (로봇: 자동으로 텍스트 교체 (-http://jmnote.com/js/ +http://zetawiki.com/ex/js/))
Set operations with JavaScript
자바스크립트 집합 연산
JavaScript 합집합, 교집합, 차집합, 대칭차

1 합집합

 

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 교집합

 

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 차집합

 

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 대칭차

 

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 예시 코드

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"]

6 같이 보기

7 참고 자료

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}