4

Underscore を使用して、この種のコレクションから最大キーと最小キーを取得するにはどうすればよいですか? 簡単な作業のようですが、簡単な解決策は見つかりませんでした。

{
    "2013-06-26":839,
    "2013-06-25":50,
    "2013-06-22":25,
    "2013-05-14":546,
    "2013-03-11":20
}
4

3 に答える 3

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

さて、本当に最大値/最小値のキーが必要な場合は、これです。幸いなことに、値は数値であるため、少し簡単になります。

var keys = _.keys(obj);
function itemgetter(key) { return obj[key]; }
minkey = _.min(keys, itemgetter);
maxkey = _.max(keys, itemgetter);
于 2013-06-26T17:34:06.713 に答える