[英]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.