3

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

目标是制作一个包含 2 个条形的条形图,其宽度正好是最长条形的宽度。

目前要找到最大值:

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,并将其作为输入。

4

1 回答 1

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)。

Array.reduce如果您不使用 ES5 浏览器,请使用 shim 。

于 2012-09-27T18:27:02.223 回答