1 回答
![?](http://img1.sycdn.imooc.com/54584dc4000118d302200220-100-100.jpg)
TA贡献1868条经验 获得超4个赞
您可以取Map, 并收集subs每个的最大值month。
分步骤:
通过将 aMap作为累加器并以分组属性month为键来减少数组。作为值从先前存储的值或零和实际值中取最大值。
如果负值或零可用,请使用条件(三元)运算符?:,例如
m.has(month) ? Math.max(m.get(month), subs) : subs
获取键/值对列表并返回具有自定义命名属性Array.from和映射函数的对象数组。
var data = [{ month: "July", subs: 2 }, { month: "July", subs: 3 }, { month: "August", subs: 2 }, { month: "August", subs: 3 }, { month: "August", subs: 3 }, { month: "August", subs: 4 }, { month: "August", subs: 5 }, { month: "August", subs: 7 }, { month: "August", subs: 7 }, { month: "August", subs: 8 }, { month: "August", subs: 11 }, { month: "September", subs: 2 }, { month: "September", subs: 2 }, { month: "September", subs: 3 }, { month: "September", subs: 5 }, { month: "September", subs: 5 }, { month: "September", subs: 6 }, { month: "September", subs: 7 }, { month: "September", subs: 8 }, { month: "September", subs: 9 }],
result = Array.from(
data.reduce(
(m, { month, subs }) => m.set(month, Math.max(m.get(month) || 0, subs)),
new Map
),
([month, subs]) => ({ month, subs })
);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
添加回答
举报