为了账号安全,请及时绑定邮箱和手机立即绑定

获取对象数组中每个唯一键的最大值 (Javascript)

获取对象数组中每个唯一键的最大值 (Javascript)

慕容708150 2022-08-04 16:00:14
我有一个对象数组,如下所示:const data = [    { depth: 0, length: 5 },    { depth: 1, length: 8 },    { depth: 1, length: 11 },    { depth: 1, length: 6 },    { depth: 1, length: 8 },    { depth: 1, length: 11 },    { depth: 1, length: 6 },    { depth: 1, length: 8 },    { depth: 2, length: 16 },    { depth: 2, length: 25 }];我需要获取每个键的最高值。我想要的数组是:lengthdepthconst result = [    { depth: 0, length: 5 },    { depth: 1, length: 11 },    { depth: 2, length: 25 }];数组可以是 X 深度。我见过的其他示例仅获得最大值,或具有最大值的单个对象,而我需要每个键的最大值。data
查看完整描述

1 回答

?
MM们

TA贡献1886条经验 获得超2个赞

使用 as 键将数组缩小为 Map。如果当前对象在 Map 中不存在,或者当前对象是 Map 小于当前项目的 ,则存储该项目。通过展开 Map 的值迭代器转换为数组:depthlengthlengthdepth


const data = [{"depth":0,"length":5},{"depth":1,"length":8},{"depth":1,"length":11},{"depth":1,"length":6},{"depth":1,"length":8},{"depth":1,"length":11},{"depth":1,"length":6},{"depth":1,"length":8},{"depth":2,"length":16},{"depth":2,"length":25}];


const result = [...data.reduce((r, o) =>

  (!r.has(o.depth) || r.get(o.depth).length < o.length) ? r.set(o.depth, o) : r

, new Map()).values()];


console.log(result);


查看完整回答
反对 回复 2022-08-04
  • 1 回答
  • 0 关注
  • 184 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号