在javascript数组中执行Set计算

Kon*_*ine 2 javascript arrays union set-theory intersection

我有2个数组让我们说:

A = [1,2,3,4,5] and B = [1,2,3,6,7]
Run Code Online (Sandbox Code Playgroud)

我想执行以下'设置计算':

C = (A ? B)
D = A - (A ? B)
E = B - (A ? B)
Run Code Online (Sandbox Code Playgroud)

实质上:

C = [1,2,3]
D = [4,5]
E = [6,7]
Run Code Online (Sandbox Code Playgroud)

有没有一种聪明的方法来做到这一点,或者我将不得不用循环和ifs交叉检查每个数组成员?我不能使用外部库(如math.js或w/e).

提前致谢.

Pau*_*oub 5

filter()至少可以为你隐藏循环:

A = [1,2,3,4,5];
B = [1,2,3,6,7];

C = intersection(A, B);
D = arrayDiff(A, C);
E = arrayDiff(B, C);

console.log(JSON.stringify(C));
console.log(JSON.stringify(D));
console.log(JSON.stringify(E));

function intersection(a, b) {
  return a.filter( 
    function(el) {
      return b.indexOf(el) >= 0;
    }
  );
}

function arrayDiff(a, b) {
  return a.filter( 
    function(el) {
      return b.indexOf(el) < 0;
    }
  );
}
Run Code Online (Sandbox Code Playgroud)