获取多个对象属性的最大值

时间:2012-09-27 18:12:25

标签: javascript

我有代码可以找到两个属性的最大值,但我不知道这是最好的方法。我在jQuery的$.getJSON(URI, function(json){})电话里面。

目标是制作一个条形图,其中有两个条形,它们恰好是最长条形的宽度。

目前要找到最大值:

var max = Math.max.apply(this, $.map(json, function(d){
    return Math.max(d.bar1, d.bar2);
}));

有更好的方法吗?

编辑:一个json字符串,按要求:

[
    {
        "bar1": "15",
        "bar2": "13"
    },
    {
        "bar1": "20",
        "bar2": "25"
    },
    {
        "bar1": "10",
        "bar2": "18"
    }
]

max应该等于25作为输入。

1 个答案:

答案 0 :(得分:3)

这有效,并且稍微缩短,虽然不一定更有效:

var max = json.reduce(function(p, d) {  // p is the current max
    return Math.max(p, d.bar1, d.bar2);
}, 0);

请参阅http://jsfiddle.net/PF8Me/1/

请注意,它确实假设您的所有值都是正数(因此"初始值"零提供给reduce)。

如果您没有使用ES5浏览器,请使用垫片Array.reduce