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

我有一个对象数组,如下所示:


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 }

];

我需要获取每个键的最高值。我想要的数组是:lengthdepth


const result = [

    { depth: 0, length: 5 },

    { depth: 1, length: 11 },

    { depth: 2, length: 25 }

];

数组可以是 X 深度。我见过的其他示例仅获得最大值,或具有最大值的单个对象,而我需要每个键的最大值。data


慕容708150
浏览 185回答 1
1回答

MM们

使用 as 键将数组缩小为 Map。如果当前对象在 Map 中不存在,或者当前对象是 Map 小于当前项目的 ,则存储该项目。通过展开 Map 的值迭代器转换为数组:depthlengthlengthdepthconst 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) =>&nbsp; (!r.has(o.depth) || r.get(o.depth).length < o.length) ? r.set(o.depth, o) : r, new Map()).values()];console.log(result);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript