Underscore を使用して、この種のコレクションから最大キーと最小キーを取得するにはどうすればよいですか? 簡単な作業のようですが、簡単な解決策は見つかりませんでした。
{
"2013-06-26":839,
"2013-06-25":50,
"2013-06-22":25,
"2013-05-14":546,
"2013-03-11":20
}
Underscore を使用して、この種のコレクションから最大キーと最小キーを取得するにはどうすればよいですか? 簡単な作業のようですが、簡単な解決策は見つかりませんでした。
{
"2013-06-26":839,
"2013-06-25":50,
"2013-06-22":25,
"2013-05-14":546,
"2013-03-11":20
}
残念ながら、_.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);