首页 > 解决方案 > 在对象数组中查找最大值

问题描述

我有看起来像这样的对象:

peaks = 
0: {intervalId: 7, time: 1520290800000, value: 54.95125000000001}
1: {intervalId: 7, time: 1520377200000, value: 49.01083333333333}

等等。

我如何找到peak有价值的Max东西?我试着这样做

this.loadPeak = peaks.map(a => Math.max(a.value));

但我只是得到一堆峰值数组value(而不是所有的intervalId,时间,值)而不是最大值。

**非常感谢大家,每个解决方案都有效,遗憾的是不能接受所有。**

标签: javascripttypescript

解决方案


对数组进行排序的主要问题是它会导致数组进行许多不必要的迭代。数组越大,排序越慢,尝试上下移动元素。使用reduce(),我们可以用最少的步骤来处理这个问题,如果当前元素的值大于前一个值,则只需替换前一个值:

var peaks = [
  {intervalId: 7, time: 1520290800000, value: 54.95125000000001},
  {intervalId: 7, time: 1520377200000, value: 49.01083333333333}
];

const maxPeak = peaks.reduce((p, c) => p.value > c.value ? p : c);

console.log(maxPeak);


推荐阅读