如何从嵌套结构中获取最高数字

时间:2012-12-04 21:59:14

标签: javascript algorithm loops

我有类似的数据结构 - >

var prices = [
    {currency: '$', value: 52},
    {currency: '$', value: 139},
    {currency: '$', value: 31},
    {currency: '$', value: 5}
];

我想知道该数据的最高价格。我知道我可以循环遍历数组并收集数据,但这样做的最佳方法是什么?

3 个答案:

答案 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将是最高的。