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

新手上路,请多包涵

我正在寻找一种非常快速、干净且有效的方法来获取以下 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
  }
]

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

原文由 Rio 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

要找到 array 中对象的最大 y 值:

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

或者在更现代的 JavaScript 中:

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

原文由 tobyodavies 发布,翻译遵循 CC BY-SA 4.0 许可协议

在对象数组中找到其属性“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)

原文由 Andy Polhill 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏