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).
提前致谢.
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)