JS:查找对象数组中的最大数字

时间:2016-02-29 00:48:34

标签: javascript

在对象数组中找到最大数字并返回该对象的最简单方法是什么?

var arr = [ { num: 0.5 }, { num: 1 }, { num: 0.35 }]

尝试使用forEach但除了存储每个数字并进行比较之外,无法解决这个问题。

感谢任何帮助。提前谢谢。

4 个答案:

答案 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+"")];