groupBy
ember-data DS-ManyArray オブジェクト用に調整された独自の関数を実装し、それを拡張_
することができます。
_.emberArrayGroupBy = function(emberArray, val) {
var result = {}, key, value, i, l = emberArray.get('length'),
iterator = _.isFunction(val) ? val : function(obj) { return obj.get(val); };
for (i = 0; i < l; i++) {
value = emberArray.objectAt(i);
key = iterator(value, i);
(result[key] || (result[key] = [])).push(value);
}
return result;
};
今、あなたは呼び出すことができます
var grouped = _.emberArrayGroupBy(activities, function(activity) {
return activity.get('dateLabel');
});
またはもっと簡単に
var grouped = _.emberArrayGroupBy(activities, 'dateLabel');
上記の関数はgroupBy()
、非常によく似たアンダースコアの元の実装に基づいています。
_.groupBy = function(obj, val) {
var result = {};
var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };
each(obj, function(value, index) {
var key = iterator(value, index);
(result[key] || (result[key] = [])).push(value);
});
return result;
};