1.多个数组求交集
//多个数组取交集,array是一个二维数组。[[1,2,3],[3,4,5]],keys就是条件
function getIntersection(array, keys) {
//2个数组的交集
function intersection(getar1, geta2, key) {
let arr = getar1.map(item => item[key])
let newArr3 = geta2.filter(info => {
return new Set(arr).has(info[key])
})
return newArr3
}
let res = array.reduce((a, b) => {
return intersection(a, b, keys)
})
return res;
}
//例如:
let list = [
{ itemNo: "1", psItemSups: [{ supplierNo: "A", isShortList: true }, { supplierNo: "B", isShortList: false }, { supplierNo: "Z", isShortList: true }] },
{ itemNo: "2", psItemSups: [{ supplierNo: "A", isShortList: true }, { supplierNo: "C", isShortList: true }] },
{ itemNo: "3", psItemSups: [{ supplierNo: "A", isShortList: true }, { supplierNo: "C", isShortList: true }] },
{ itemNo: "4", psItemSups: [{ supplierNo: "A", isShortList: true },{ supplierNo: "C", isShortList: true }]},
]
let allArray = [];
list.forEach(item => {
//其他物料的供应商短名单
let otherShortSup = item.psItemSups.filter(item => { return item.isShortList });
allArray.push(otherShortSup);
})
console.log(getIntersection(allArray,"supplierNo"));
//Array [Object { supplierNo: "A", isShortList: true }]