在对象数组中找到最大数字并返回该对象的最简单方法是什么?
var arr = [ { num: 0.5 }, { num: 1 }, { num: 0.35 }]
尝试使用forEach但除了存储每个数字并进行比较之外,无法解决这个问题。
感谢任何帮助。提前谢谢。
答案 0 :(得分:9)
reduce 将完成这项工作:
var maxObj = arr.reduce(function(max, obj) {
return obj.num > max.num? obj : max;
});
答案 1 :(得分:1)
返回编号最大的对象:
var arr = [ { num: 0.5 }, { num: 1 }, { num: 0.35 }]
var res = Math.max.apply(Math,arr.map(function(o){return o.num;}))
var obj = arr.find(function(o){ return o.num == res; })
console.log(obj);
答案 2 :(得分:0)
你可以用lodash吗?
var arr = [ { num: 0.5 }, { num: 1 }, { num: 0.35 }]
var max = _.max(arr, function(item) {
return item.num;
});
每个aquinas建议 - 用_.max切换_.sortBy(再没有_.maxBy) plunkr:https://plnkr.co/edit/TYIou2GUUxRWcXoCXHnv?p=preview
答案 3 :(得分:0)
尝试使用Math.max()
,JSON.stringify()
,String.prototype.match()
var arr = [ { num: 0.5 }, { num: 1 }, { num: 0.35 }];
var res = arr[(m = Math.max.apply(Math, n = JSON.stringify(arr).match(/(\d+\.\d+)|(\d+)/g))) && n.indexOf(m+"")];