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

Jmnote (토론 | 기여)님의 2015년 1월 3일 (토) 18:56 판 (→‎예시 코드)
JavaScript 합집합, 교집합, 차집합, 대칭차

1 합집합

 

2 교집합

 

3 차집합

 

4 대칭차

 

5 예시 코드

function union(a, b) {
  var tmp={}, res=[];
  for(var i=a.length-1; i>=0; --i) tmp[a[i]]=a[i];
  for(var i=b.length-1; i>=0; --i) tmp[b[i]]=b[i];
  for(var k in tmp) if(tmp.hasOwnProperty(k)) res.push(tmp[k]);
  return res;
}

function intersection(a, b) {
  var res=[];
  while( a.length > 0 && b.length > 0 ) {  
    if( a[0] < b[0] ){ a.shift(); }
    else if( a[0] > b[0] ){ b.shift(); }
    else { res.push(a.shift()); b.shift(); }
  }
  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'];

console.log( union(arr1, arr2) );
// ["D", "C", "B", "A", "F", "E"]
console.log( intersection(arr1, arr2) );
// ["C", "D"]
console.log( array_diff(arr1, arr2) );
// ["A", "B"]
console.log( array_diff(arr2, arr1) );
// ["E", "F"]
console.log( sym_diff(arr1, arr2) );
// ["A", "B", "E", "F"]

6 같이 보기

7 참고 자료

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