javascript - 在对象数组中查找最大值
问题描述
我有看起来像这样的对象:
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,时间,值)而不是最大值。
**非常感谢大家,每个解决方案都有效,遗憾的是不能接受所有。**
解决方案
对数组进行排序的主要问题是它会导致数组进行许多不必要的迭代。数组越大,排序越慢,尝试上下移动元素。使用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);
推荐阅读
- python - Python。嵌套字典列表:奇怪的行为
- azure - Azure New-AzureStorageBlobSasToken 返回不正确的 fulluri 字符串
- scala - Spark - 读取许多小型镶木地板文件可事先获取每个文件的状态
- python - 验证嵌套的 Flask WTForm 和删除/删除动态命名的表单(表单域)
- compiler-errors - Minizinc“完全正确”的问题。编译时出错
- php - php date() 函数没有给我正确的年份
- ios - 使用 Lottie 自定义 UIRefreshControl
- node.js - Sequelize 将 PSQL 设置为 VARCHAR(255) 无论我告诉它 TEXT(2048) 还是任何其他长度
- java - Spring Cloud 配置服务器禁用加密和解密端点
- javascript - 从谷歌地方自动完成选择值后防止输入框上的模糊