例如,underscore/lowdash
您可以使用_.max(list, [iterator], [context])
函数接收一个最大值。但是,如果它们都相等,我希望它返回多个最大值。
var stooges = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 50}];
_.max(stooges, function(stooge){ return stooge.age; });
=> {name: 'curly', age: 50};
我想要这样的东西:
var stooges = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 50}];
_.multiplemax(stooges, function(stooge){ return stooge.age; });
=> [{name: 'curly', age: 50}, {name: 'larry', age: 50 ];
可以使用下划线。
是否有任何特殊要求,例如您无法将多个功能组合在一起以做multimax。如果没有,我脑中有2种解决方案
最简单的解决方案是使用_.max查找age
数组的最大值,然后使用_.filter过滤所有等于max的值age
另一种解决方案是使用_.groupBy对数组进行分组age
,然后使用maxage
像这样
function multiplemax(arr, compare) {
var groups = _.groupBy(arr, compare);
var keys = _.keys(groups);
var max = _.max(keys);
return groups[max];
}
更多“下划线”
_.mixin({
multiplemax: function(arr, fn) {
var groups = _.groupBy(arr, fn);
var keys = _.keys(groups);
var max = _.max(keys);
return groups[max];
}
})
或使用max
+filter
function multiplemax(arr, compare) {
var max = _.max(arr, function(v){return v[compare]});
return _.filter(arr, function(v){return v[compare]==max[compare]});
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句