我有代码可以找到两个属性的最大值,但我不知道这是最好的方法。我在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作为输入。
答案 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
。