我有类似的数据结构 - >
var prices = [
{currency: '$', value: 52},
{currency: '$', value: 139},
{currency: '$', value: 31},
{currency: '$', value: 5}
];
我想知道该数据的最高价格。我知道我可以循环遍历数组并收集数据,但这样做的最佳方法是什么?
答案 0 :(得分:6)
这样的代码:
Math.max.apply(Math, prices.map(function(p) {return p.value;}));
答案 1 :(得分:2)
我们可以在Array.prototype.map
旁边使用Math.max
来做到这一点。由于.map()
会返回数组,我们可以使用它来Math.max
调用Function.prototype.apply
。结果看起来像
var max = Math.max.apply(null, prices.map(function( entry ) {
return entry.value;
}));
console.log( max ); // 139
以上陈述等于
Math.max( 51, 139, 31, 5 );
会返回相同的结果,我们只是以编程方式创建它。
答案 2 :(得分:1)
prices.sort(function(a, b) {
return b.value - a.value;
});
然后prices[0].value
将是最高的。