使用Underscore从集合中获取最大和最小键

Ser*_*rov 4 javascript underscore.js

如何使用Underscore从这种集合中获取最大和最小键?似乎是一项简单的任务,但我找不到快速的解决方案.

{
    "2013-06-26":839,
    "2013-06-25":50,
    "2013-06-22":25,
    "2013-05-14":546,
    "2013-03-11":20
}
Run Code Online (Sandbox Code Playgroud)

for*_*all 6

不幸的是,_. min和_.max只支持数字,所以我们不能将它们用于你的字符串键.幸运的是,您的日期采用字符串排序格式.

var minkey, maxkey;
_.each(obj, function(value, key) {
   if (minkey == null || key < minkey) { minkey = key; }
});
_.each(obj, function(value, key) {
   if (maxkey == null || key > maxkey) { maxkey = key; }
});
Run Code Online (Sandbox Code Playgroud)

现在,如果你真的想在关键的的最大/最小值,那么它的这一点.幸运的是,您的值是数字,因此更容易:

var keys = _.keys(obj);
function itemgetter(key) { return obj[key]; }
minkey = _.min(keys, itemgetter);
maxkey = _.max(keys, itemgetter);
Run Code Online (Sandbox Code Playgroud)