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

3

我有一段代码可以找到两个属性中的最大值,但我不确定这是否是最佳实践。我在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。

你的问题与JSON无关。一旦解析完成,你就在处理JavaScript对象。 - Felix Kling
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中提供了“初始值”为零)。

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


1
@Caleb,不需要jQuery的话;-) - Alnitak
好奇为什么人们不喜欢jQuery?我在Stack Overflow上看到过这种情绪。 - Caleb
@Caleb 实际上我一直在使用jQuery。我主要是指使用标准的ES5函数(例如reducemap)而不是$.map - Alnitak

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