Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS:查找对象数组中的最大数量_Javascript - Fatal编程技术网

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

Javascript JS:查找对象数组中的最大数量,javascript,Javascript,在对象数组中找到最大数量并返回该对象的最简单方法是什么 var arr = [ { num: 0.5 }, { num: 1 }, { num: 0.35 }] 尝试使用forEach,但除了存储每个数字并进行比较外,找不到实现此目的的方法 感谢您的帮助。提前谢谢。你可以用lodash吗 var arr = [ { num: 0.5 }, { num: 1 }, { num: 0.35 }] var max = _.max(arr, function(item) { r

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

var arr = [ { num: 0.5 }, { num: 1 }, { num: 0.35 }]
尝试使用forEach,但除了存储每个数字并进行比较外,找不到实现此目的的方法

感谢您的帮助。提前谢谢。

你可以用lodash吗

   var arr = [ { num: 0.5 }, { num: 1 }, { num: 0.35 }]
   var max = _.max(arr, function(item) {
      return item.num;
   });
根据阿奎那的建议-与u.max切换u.sortBy不再有u.maxBy了 plunkr:

reduce将完成以下工作:

var maxObj = arr.reduce(function(max, obj) {
  return obj.num > max.num? obj : max;
});

返回数字最大的对象:

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);
尝试使用Math.max、JSON.stringify、String.prototype.match


蛮力很容易你不需要存储每个数字,只需循环一次,并保留当前最大数字的引用。尽管您确实需要考虑如果多个元素具有相同的high number.Ack,该怎么办。不要排序以查找最大的数字。如果要使用lodash,请使用maxby。马克斯比亚尔,num@aquinas好的一点是,ONlogN比ON更糟糕-顺便说一句,这里不再有u.maxBy。max正在执行所需的操作,但不会返回对象。OP希望得到具有最大值的对象,而不仅仅是值。@nnnnnn但它不返回对象?是的,是的;请参见res=arr[/*Math.max*/]处的括号表示法也许我今天的密度特别大,但您不是在尝试使用max.num属性作为原始数组的索引吗?这行不通。括号中的位返回最大值,然后用作原始数组的索引。这是因为在OP中,最大值为1,相关对象位于索引1处。将索引0处的最大值设为3,看看会发生什么。好吧,我想你最终会让它屈服的我不确定JSON.stringify是否是一种合理的方法,在/\d+。\d+\d+/g中应该引用句点。Reduce是我想要的。谢谢。这是解决我问题的好方法,
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+"")];