Javascript 基于一个键删除重复项,并获取数组中另一个键的最低值

Javascript 基于一个键删除重复项,并获取数组中另一个键的最低值,javascript,arrays,sorting,object,duplicates,Javascript,Arrays,Sorting,Object,Duplicates,如何在对象数组中按一个键进行排序并按另一个键进行重复数据消除 在下面的示例中,同一iD下有多个相同的dist。如何为给定iD选择最小距离 [ { dist: 1.2152494565059755, id: '37000' }, { dist: 2.168068558345124, id: '9000' }, { dist: 4.861213457464137, id: '37000' }, { dist: 5.226238485876963, id: '04000' }, { d

如何在对象数组中按一个键进行排序并按另一个键进行重复数据消除

在下面的示例中,同一iD下有多个相同的
dist
。如何为给定iD选择最小距离

[ { dist: 1.2152494565059755, id: '37000' },
  { dist: 2.168068558345124, id: '9000' },
  { dist: 4.861213457464137, id: '37000' },
  { dist: 5.226238485876963, id: '04000' },
  { dist: 5.278968876845613, id: '29000' },
  { dist: 8.446987036894901, id: '09000' },
  { dist: 8.770432584510608, id: '09000' },
  { dist: 9.848816041209018, id: '04000' },
  { dist: 10.681310440202585, id: '58000' },
  { dist: 11.170746649119321, id: '58000' },
  { dist: 12.84374942857388, id: '37000' },
  { dist: 13.476922171827615, id: '09000' },
  { dist: 14.159308062885033, id: '09000' },
  { dist: 15.117353720958263, id: '80000' },
  { dist: 16.528082434902654, id: '58000' },
  { dist: 17.603866532406027, id: '80000' },
  { dist: 18.49748912990931, id: '37000' } ]
预期产量为

[ { dist: 1.2152494565059755, id: '37000' },
  { dist: 2.168068558345124, id: '09000' },
  { dist: 5.226238485876963, id: '04000' },
  { dist: 5.278968876845613, id: '29000' },
  { dist: 10.681310440202585, id: '58000' },
  { dist: 15.117353720958263, id: '80000' },
  { dist: 16.528082434902654, id: '58000' } ]
您可以通过以下方式实现:

代码>var数组<<代码>var数组<<<代码>var数组<{{{{代码:1.2152524945456565650505575755,id:'3700},{{dist:1.1680686855555555454545454545456868686868685555555545124,id:{dist:2.161668686868685555555555555555555545454545124,id:'9000'45124,id:'9000'000,,,{{{{dist:4.86学校:4.869.869''',,,{{代码:4.865.865.78787878785.58585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858{dist:10.68131044020585,id:58000},{dist:11.170746649119321,id:58000},{dist:12.84374942857388,id:37000},{dist:13.476922171827615,id:09000},{dist:14.159308062885033,id:09000},{dist dist:15.1173353720958263,id:80000},{dist dist:16.52808243492654,id:58000},{dist:17.866033247,id:1299018}] const merged=array.reduce((acc,a)=>{ const id=parseInt(a.id); 如果(!acc[id]| | acc[id][“dist”]>a.dist) acc[id]=a; 返回acc; },{}) const final=Object.values(合并).sort((a,b)=>a.dist-b.dist)
console.log(final)此站点充满了执行这两种操作的示例。请展示您所做的尝试以及您所做的研究工作。请参阅我尝试使用模块进行重复数据消除,但使用数组进行排序。sort()。不知道如何将两者合并到一个文件中。你所在的网站…Stackoverflow。它在每个页面的顶部都有搜索框,谷歌和其他搜索引擎也会在这里为答案编制索引。当问我这个问题时,我期待着显示你的尝试和做基础研究。排序是基于一个键-。但我无法解释了解如何基于一个键进行重复数据消除,同时基于另一个键进行排序谢谢您的回答。在尝试执行您的解决方案时,我在
Object.values
行中遇到错误。
Object.values不是一个函数。
@csvb更新了答案。这很好。您能解释一下这些代码行是如何工作的吗?主要是累加器和Object.Keys部分。@csvb我在答案中添加了详细的解释。对于累加器,
Object.Keys
Object.values
,单击答案中链接上的链接。