js对数组的一些处理问题?

let list00 = [{name: '111'}, {name: '222'}, {name: '555'}]
let list01 = [{name: '111'}, {name: '222'}, {name: '333'} {name: '555'}, {name: '666'}]

得到 list03 = [{name: '333'},{name: '666'}]

阅读 1.7k
4 个回答

用 Lodash 方便,使用 _.differenceBy()

const result = _.differenceBy(list01, list00, "name");

也可以自己写,每次去遍历检查是否存在(用 some)

const result = list01.filter(({ name }) => !list00.some(it => it.name === name))

或者用 every(取反逻辑往里放)

const result = list01.filter(({ name }) => list00.every(it => it.name !== name))

如果需要比较的多,可以先做个集合来判断

const existKeys = new Set(list00.map(({ name }) => name));
const result = list01.filter(({ name }) => !existKeys.has(name));

差集呗

image.png

两个数组对象去重(可百度

let list00 = [{name: '111'}, {name: '222'}, {name: '555'}]
let list01 = [{name: '111'}, {name: '222'}, {name: '333'},{name: '555'}, {name: '666'}]
let list03= list01.filter((v) =>
  list00.every((val) => val.name != v.name)
)
console.log(list03)

image.png

新手上路,请多包涵

试了一下,这样也行

list01.reduce((pre,item) => {
  return JSON.stringify(list00).indexOf(JSON.stringify(item))!==-1?pre:[...pre,item]
},[]);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题