gpt4 book ai didi

javascript - 从值数组中获取多个最大值

转载 作者:行者123 更新时间:2023-12-01 00:56:45 25 4
gpt4 key购买 nike

例如,在 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 ];

使用下划线即可。

最佳答案

是否有任何特殊要求,例如不能组合多个函数来执行 multiplemax。如果没有,我脑子里有两个解决方案

最简单的解决方案是使用 _.max 查找数组的最大 age,然后使用 _.filter 过滤所有等于 max age 的值>

另一个解决方案是使用 _.groupBy 按 age 对数组进行分组,然后获取最大 age 的组

类似这样的事情

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]});
}

关于javascript - 从值数组中获取多个最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20156945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com