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 { } });

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM