javascript - 通过给定的属性名称删除重复的对象数组
问题描述
我有一个包含大约 1500 个元素的对象数组,我正在尝试创建一个新数组,删除具有重复唯一属性的元素。但是由于某种原因,当我运行该函数时,它会在数组的前 100 个元素处停止。我怎样才能让它遍历整个数组。
const result = Array.from(new Set(DATA.map((a) => a.Numbers))).map(
(Numbers) => {
return DATA.find((a) => a.Numbers === Numbers);
}
);
解决方案
由于还没有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%;}
推荐阅读
- c - 与系统函数同名的C全局变量导致段错误?
- python - 来自子进程的烧瓶重定向 - 仅使用 python 制作等待页面
- ios - 不支持的顶级事件类型“onGestureHandlerStateChange 在 iphone X 中调度
- php - 未分配 PHP 变量
- r - R中随时间变化的动画条形图
- android - 使用 mediaplayer 类播放多首歌曲(for循环)
- activemq - 如何在 ActiveMq 中设置最大消息大小
- c# - 使用C#的ms word自动化表格行问题
- c# - 配置多个 web.config 文件
- javascript - 提交请求时自动关闭浏览器