我有一个像这样的对象:
var lookup = {
42: "42",
43: "43"
}
如何在此对象中获得最高价值?我希望得到43
,因为它是最高的数字。
答案 0 :(得分:2)
正如评论所示,你的问题有点模糊。如果您希望比较解析为int的字符串值,则以下内容应根据您对象的结构进行操作:
var myArray = Object.keys(lookup).map(function(current){
return parseInt(current)
});
var max = Math.max.apply(null, myArray)
答案 1 :(得分:1)
尝试此功能:
function getMax(dataObj){
var max;
for(var key in dataObj){
if (dataObj.hasOwnProperty(key)) {
var number = parseFloat(dataObj[key]);
//max by default is undefined and number could be NaN
if(!max && number){
max = number;
}
else if(number > max){
max = number;
}
}
}
return max;
}
它将遍历一个对象并获取在该对象上设置的所有属性(而不是在原型链中),尝试将它们转换为数字然后返回最大值。请注意,这不是返回键,而是返回值。
答案 2 :(得分:0)
为了获得多样化的答案,这里是使用lodash的reduce
和三元运算符的更实用的实现:
_.reduce(_.values(lookup), function(max, n){ return n > max ? n : max; });