es6 set取两个数组的交集

const difference= (a, b) => {
const sA = new Set(a), sB = new Set(b);
return [...a.filter(x => !sB.has(x)), ...b.filter(x => !sA.has(x))];
}
// difference([1,2,3], [1,2,4]) -> [3,4]

 

let arr1 = [
  {"__row":12,"name":"甲"},
  {"__row":3,"name":"乙"},
  {"__row":6,"name":"丙"},
  {"__row":17,"name":"丁"},

]; let arr2 = [
  
  {"__row":12,"name":"张"},

  {"__row":23,"name":"李"},

  {"__row":6,"name":"王"},

  {"__row":57,"name":"陈"},

]; const id_arr1
= new Set(arr1.map(o => o.__row)); const id_arr2 = new Set(arr2.map(o => o.__row)); //id的交集 const allIds = new Set([...id_arr1].filter(x => id_arr2.has(x))) console.log(allIds) arr1.forEach(o => { //如果有交集 if (allIds.has(o.__row)) { console.log(o)
    //结果 }
else { } });

 

posted @ 2019-07-12 09:41  Mr_Zc  阅读(1140)  评论(0)    收藏  举报