如何更优雅地读取对象数组中所有元素的属性?

3
var data = [{"speed": 210},{"speed": 50},{"speed": 160}];

我希望从data中获取最大速度,因此我正在执行以下操作:

var max = Math.max(data[0]['speed'], data[1]['speed'], data[2]['speed']);

这不是优雅的,也不可扩展(假设数组中可能有任意数量的对象)。

注意:我已经在页面上标记了jQuery(即如果您可以建议使用.grep或其他一些聪明的方法,它是可用的 - 尽管我假设那太过于复杂了?)。


2
你的问题和标题似乎不匹配。你不需要所有的属性,你想要一个数组中所有元素的一个属性。 - Barmar
抱歉,我会相应地进行编辑。 - user1017882
1个回答

11

您可以将对象speed的属性映射到一个数组中,然后使用apply()Math.max来获取最大的数字。

Math.max.apply( null, data.map(function(x) {return x.speed}) );

演示


一针见血。非常感谢。 - user1017882

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接