慕容708150
2022-08-04 16:00:14
我有一個對象數組,如下所示: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
提交
取消