在对象数组中查找属性的最大值

2022-08-29 22:36:35

我正在寻找一种非常快速,干净和有效的方法来获取以下JSON切片中的最大“y”值:

[
  {
    "x": "8/11/2009",
    "y": 0.026572007
  },
  {
    "x": "8/12/2009",
    "y": 0.025057454
  },
  {
    "x": "8/13/2009",
    "y": 0.024530916
  },
  {
    "x": "8/14/2009",
    "y": 0.031004457
  }
]

循环是实现它的唯一方法吗?我热衷于以某种方式使用.Math.max


答案 1

要查找 中对象的最大值,yarray

    Math.max.apply(Math, array.map(function(o) { return o.y; }))

或者在更现代的JavaScript中:

    Math.max(...array.map(o => o.y))

答案 2

查找其属性“Y”在对象数组中具有最大值的对象

一种方法是使用 Array reduce。.

const max = data.reduce(function(prev, current) {
    return (prev.y > current.y) ? prev : current
}) //returns object

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce http://caniuse.com/#search=reduce(IE9及以上)

如果你不需要支持IE(只有Edge),或者可以使用像Babel这样的预编译器,你可以使用更简洁的语法。

const max = data.reduce((prev, current) => (prev.y > current.y) ? prev : current)