繁体   English   中英

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

[英]Get highest value per unique key in object array (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 }
];

我需要获得每个depth键的最高length值。 我想要的数组是:

const result = [
    { depth: 0, length: 5 },
    { depth: 1, length: 11 },
    { depth: 2, length: 25 }
];

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

谢谢!

使用depth作为键将阵列减少到 Map。 如果当前 object 不存在于 Map 中,或者当前length为 Map 小于当前项目的length ,则存储该depth的项目。 通过传播 Map 的值迭代器转换为数组:

 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM