我有一个对象数组,如下所示: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);
添加回答
举报
0/150
提交
取消