请问如果过滤掉数组中有重复属性的对象?

RT
例如:

const demo = [
  { a:1, b:4 },
  { a:2, b:4 },
  { a:3, b:5 },
]

现在要过滤掉demo中的 {a:1, b:4 } 或 { a:2, b:4 },他们中留一个即可,返回一个新数组,请问ES6有什么快捷的方法吗?

过滤后结果为:

const demo = [
  { a:1, b:4 },
  { a:3, b:5 },
]

const demo = [
  { a:2, b:4 },
  { a:3, b:5 },
]


森栏
浏览 1066回答 2
2回答

牛魔王的故事

嗨,思路供参考// 取前function filter1 (arr = [], keys = []) {  const keySets = new Map(keys.map(k => [k, new Set()]))  return arr.filter(x => {    const exist = keys.some(k => keySets.get(k).has(x[k]))    if (!exist) {      keys.forEach(k => keySets.get(k).add(x[k]))    }    return !exist  })}// 取后function filter2 (arr = [], keys = []) {  return keys.reduce((r, k) => [...r.reduce((m, x) => m.set(x[k], x), new Map()).values()], arr)}console.log(filter1(demo, ['a', 'b']))console.log(filter2(demo, ['a', 'b']))

素胚勾勒不出你

ES6没有,不过Lodash有PS:代码乱了,直接上图吧
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript