收藏
回答

【求解答?】如何比较两个数组,得出相同的元素和不同的元素?

我之前测试的,不管用

let list1 = ['a', 'b','c' ];

let list2 = ['a', 'b'];

let same = [];

let tet =[]

for (let i = 0; i < list1.length; i++) {

for (let p = 0; p < list1.length; p++) {

if (list1[i]!=list2[p]) {

same.push(list1[i])

}else{

tet.push(list1[i])

}

}

请教一下,如何运算得出相同元素为a,b,不同的元素c

想获得比较数组比较好用的方法


回答关注问题邀请回答
收藏

2 个回答

  • 拾忆
    拾忆
    2020-02-17

    数组


    取并集

    let a=new Set([1,2,3,4,5]);

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

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

    console.log('arr',arr);


    取交集

    let a=new Set([1,2,3,4,5]);

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

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


    取差集

    let a=new Set([1,2,3,4,5]);

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

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

    console.log('arr',arr);


    数组对象


    取交集

    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 arr = [...b].filter(x => [...a].some(y => y.id === x.id));

    console.log('arr',arr)


    取差集

    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 arr = [...b].filter(x => [...a].every(y => y.id !== x.id));

    console.log('arr',arr);

    2020-02-17
    有用 2
    回复 2
    • Mr.Zhao
      Mr.Zhao
      2020-02-17
      先讲讲数据结构吧
      2020-02-17
      回复
    • 躺在海上看书
      躺在海上看书
      2020-02-17
      谢谢解答!
      2020-02-17
      回复
  • 子不语
    子不语
    2020-02-17

    --↓↓👍如果觉得有帮助的话请点个【赞】吧(我的小尾巴又肥来啦!)

    2020-02-17
    有用
    回复 2
    • 躺在海上看书
      躺在海上看书
      2020-02-17
      好像打印出来的不等于的没有变化呢
      2020-02-17
      回复
    • 子不语
      子不语
      2020-02-17回复躺在海上看书
      你这个算法有问题的。看看其他楼的吧

      --↓↓👍如果觉得有帮助的话请点个【赞】吧(我的小尾巴又肥来啦!)

      2020-02-17
      回复
登录 后发表内容
问题标签