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