首页 > 解决方案 > 通过给定的属性名称删除重复的对象数组

问题描述

我有一个包含大约 1500 个元素的对象数组,我正在尝试创建一个新数组,删除具有重复唯一属性的元素。但是由于某种原因,当我运行该函数时,它会在数组的前 100 个元素处停止。我怎样才能让它遍历整个数组。

  const result = Array.from(new Set(DATA.map((a) => a.Numbers))).map(
    (Numbers) => {
      return DATA.find((a) => a.Numbers === Numbers);
    }
  );

标签: javascriptarraysmethodsfilter

解决方案


由于还没有Map基于 - 的答案(我相信,从性能的角度来看Map,最适合目的),我将发布我的:

const src = [{key: 'a', value: 1}, {key: 'c', value: 3}, {key: 'b', value: 2}, {key: 'a', value: 1}, {key: 'c', value: 3}]

const dedupe = (arr, keyProp) => [
    ...arr
        .reduce((acc, obj) => 
            (acc.set(obj[keyProp], obj), acc), new Map)
        .values()
]

const result = dedupe(src, 'key')

console.log(result)
.as-console-wrapper{min-height:100%;}


推荐阅读