var a = ['1', '2', '3']
var b = ['2', '3']
var c = ['4', '5','2']
筛选出这三个数组共有的元素
var a = ['1', '2', '3']
var b = ['2', '3']
var c = ['4', '5','2']
筛选出这三个数组共有的元素
let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);
// 并集
let union = new Set([...a, ...b]);
// Set {1, 2, 3, 4}
// 交集
let intersect = new Set([...a].filter(x => b.has(x)));
// set {2, 3}
// 差集
let difference = new Set([...a].filter(x => !b.has(x)));
// Set {1}
let a = ['1', '2', '3', '5'];
let b = ['2', '3', '5'];
let c = ['4', '5','2'];
console.log(getCommon(a, b, c)); // ['2', '5']
function getCommon(arrA, arrB, ...others) {
if (others.length == 0) {
return _two(arrA, arrB);
} else {
return getCommon(_two(arrA, arrB), ...others)
}
// 两个数组取交集
function _two(a, b) {
return a.filter(el => b.includes(el));
}
}
fn 接受任意个需要筛选的数组
const fn = (...arg) =>
arg
.reduce((a, b) => {
;[...new Set(b)].forEach(_b => {
const obj = a.find(({ key }) => key === _b)
obj ? obj.value++ : a.push({ key: _b, value: 1 })
})
return a
}, [])
.filter(({ value }) => value === arg.length)
// 如果需要查找每个数组唯一的所有的元素,注释上一行语句,把下一行语句取消注释
// .filter(({ value }) => value === 1)
.map(a=>a.key)
fn(a,b,c)
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
3 回答1.3k 阅读✓ 已解决
a.filter(i=> b.some(_i=>_i === i) && c.some(_i=> _i ===i))