如何在Underscore中获取max函数返回的值的键

时间:2014-01-24 10:12:11

标签: javascript underscore.js

我是Underscore的新手。 我正在使用下面的函数来获取包含值的计数的对象,并且工作正常。

 _.countBy(data, function(value) {
             if( value[1] <10 ) return '0' ;
             if( value[1] >99 && value[1] <= 999 ) return '1';
             if( value[1] >1000 ) return '2';

          });

_.countBy函数的输出为{1 : 23, 2: 4}

因此,使用_.max函数,我可以获得值23

但是我想获得其最大值返回的密钥(即1)。

我该怎么做?

由于

3 个答案:

答案 0 :(得分:1)

虽然这是一个非常古老的问题,但您也可以链接您的解决方案

var occurrenceCount = {1:15, 2:3, 3: 45, 4: 12};
var max = _.chain(occurrenceCount).max().value();

这将为您提供最大值,然后您可以反转以找到密钥

_.chain(occurrenceCount).invert().value()[max];

答案 1 :(得分:0)

最后由于this回答,我可以使用以下代码获取最大值的密钥。

var occurrenceCount = _.countBy(data, function(value) {
             if( value[1] <10 ) return '0' ;
             if( value[1] >99 && value[1] <= 999 ) return '1';
             if( value[1] >1000 ) return '2';

          });
var maxValue = _.max(occurrenceCount);
var key= _.invert(occurrenceCount)[maxValue];

1获取{1 : 23, 2: 4}密钥。

答案 2 :(得分:0)

就这么简单。

var occurrenceCount = {1:15, 2:3, 3: 45, 4: 12};
var result = _.max(_.pairs(occurrenceCount), _.last);

<强>输出

[ '3', 45 ]

如果您只想要密钥,只需执行

即可
var result = _.first(_.max(_.pairs(occurrenceCount), _.last));

<强>输出

3