美文网首页
数组的交集和并集

数组的交集和并集

作者: 北〤极星_ | 来源:发表于2020-06-11 14:47 被阅读0次

    简单的数组

    let a=[1,2,3,4,5];

    let b=[1,2,3,4,5,6,7,8,9];

    并集


    let arr = Array.from(new Set([...a, ...b]));

    // [ 1, 2, 3, 4, 5, 6, 7, 8, 9]

    交集

    let arr = Array.from(new Set([...b].filter(x => a.has(x))));

    // [ 1, 2, 3, 4, 5 ]

    差集

    let arr = Array.from(new Set([...b].filter(x => !a.has(x))));

    //[ 6, 7, 8, 9 ]

    数组对象

    let a = [{ id: 1, a: 123, b: 1234 },    

             { id: 2, a: 123, b: 1234 }];

    let b = [{ id: 1, a: 123, b: 1234 },   

                { id: 2, a: 123, b: 1234 },    

                 { id: 3, a: 123, b: 1234 },                

                { id: 4, a: 123, b: 1234 }];  

    并集

    let obj1 = {},//通过ID去重

    markerAray = a.concat(b).reduce((cur, next) => {   

         obj1[next.id] ? "" : obj1[next.id] = true && cur.push(next);  return cur;   

     }, []) //设置cur默认类型为数组,并且初始值为空的数组 

    //markerAray  [ { id: 1, a: 456, b: 1234 }, { id: 2, a: 123, b: 1234 }, { id: 3, a: 123, b: 1234 }, { id: 4, a: 123, b: 1234 }]

    交集

     let arr = [...b].filter(x => [...a].some(y => y.id === x.id));

    //[ { id: 1, a: 123, b: 1234 }, { id: 2, a: 123, b: 1234 } ]

    差集

    let arr = [...b].filter(x => [...a].every(y => y.id !== x.id));

    // [ { id: 3, a: 123, b: 1234 }, { id: 4, a: 123, b: 1234 } ]

    相关文章

      网友评论

          本文标题:数组的交集和并集

          本文链接:https://www.haomeiwen.com/subject/ervecqtx.html