js 数组 取多和少

a=[{id:1},{id:2},{id:3}]
b=[{id:1},{id:2},{id:4}]

如何 计算 a 中 b 没有的 b中a没有的

阅读 2.4k
3 个回答

根据题意你是要得到b中a没有的{id: 4}]?

let a = [{id:1},{id:2},{id:3}];
let b = [{id:1},{id:2},{id:4}];
let result = b.filter(el => {
    return !(a.find(item => el.id === item.id));
});
console.log(result);
// [{id: 4}]

同理可得a 中 b 没有的 [{id: 3}].

取 a 中 b 没有的

a.filter(({ id }) => !b.find(_b => _b.id === id))

取 a 和 b 中不重复的部分

 a.concat(b)
  .reduce((prev, { id }) => {
    const obj = prev.find(_a => _a.id === id)
    if (obj) {
      obj.value += 1
    } else {
      prev.push({ id, value: 1 })
    }
    return prev
  }, [])
  .filter(_a => _a.value === 1)
  .map(_a => ({ id: _a.id }))

合并后计数 最后找数量等于1

var result = new Object();
var a=[{id:1},{id:2},{id:3}];
var b=[{id:1},{id:2},{id:4}];
var c= a.concat(b);
c.forEach(x=>(result[x.id]&&(result[x.id].count++))||(result[x.id]=x)&&(x.count=1));
c.filter(x=>x.count==1);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题