js求数组的交集/并集/差集/去重

Posted 时空旅人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js求数组的交集/并集/差集/去重相关的知识,希望对你有一定的参考价值。

      1.求交集
    var arr1 = [{name:‘name1‘,id:1},{name:‘name2‘,id:2},{name:‘name3‘,id:3}]; var arr1Id = [1,2,3] var arr2 = [{name:‘name1‘,id:1},{name:‘name2‘,id:2},{name:‘name3‘,id:3},{name:‘name4‘,id:4},{name:‘name5‘,id:5}]; var result = arr2.filter(function(v){ return arr1Id.indexOf(v.id)!==-1 // 利用filter方法来遍历是否有相同的元素 }) console.log(result);

 

      2.求并集
    let arr1 = [{name:‘name1‘,id:1},{name:‘name2‘,id:2},{name:‘name3‘,id:3}]; let arr2 = [{name:‘name1‘,id:1},{name:‘name4‘,id:4},{name:‘name5‘,id:5}]; let arr3 = arr1.concat(arr2); let result = []; var obj = []; result = arr3.reduce(function(prev, cur, index, arr) { console.log(prev, cur); obj[cur.id] ? ‘‘ : obj[cur.id] = true && prev.push(cur); return prev; }, []); console.log(result);

 

    3.求差集
    let arr1 = [{name:‘name1‘,id:1},{name:‘name2‘,id:2},{name:‘name3‘,id:3}]; let arr1Id = [1,2,3]; let arr2 = [{name:‘name1‘,id:1},{name:‘name4‘,id:4},{name:‘name5‘,id:5}]; let arr2Id = [1,4,5]; let arr3 = arr1.concat(arr2); let result = arr3.filter(function(v){ return arr1Id.indexOf(v.id)===-1 || (arr2Id.indexOf(v.id)===-1) }) console.log(result);

  

      4.去重
    let arr = [{name:‘name1‘,id:1},{name:‘name2‘,id:2},{name:‘name3‘,id:3},{name:‘name1‘,id:1},{name:‘name4‘,id:4},{name:‘name5‘,id:5}]; var obj = []; let result = arr.reduce(function(prev, cur, index, arr) { console.log(prev, cur); obj[cur.id] ? ‘‘ : obj[cur.id] = true && prev.push(cur); return prev; }, []);

 

以上是关于js求数组的交集/并集/差集/去重的主要内容,如果未能解决你的问题,请参考以下文章

ES6 Set求两个数组的并集交集差集;以及对数组去重

JS 利用集合set实现 数组去重 交集 并集 差集

js 数组 : 差集并集交集去重

js数组并集,交集,差集

js Array 交集 并集 差集 去重

ES6数组:两个数组或数组对象取并集、交集、差集