Есть список значений параметров по годам, типа
2000 x 13
2000 y 74
2001 x 55
2001 y 83
...
2018 z 7
Нужно собрать все значения по одному году в один объект, чтобы имена параметров стали свойствами, и вернуть массив таких объектов. С помощью присваиваний это сделать легко:
var _ = require('underscore');
var data = [{
year: 2000,
name: 'x',
value: 13
}, {
year: 2000,
name: 'y',
value: 74
}, {
year: 2001,
name: 'x',
value: 55
}, {
year: 2001,
name: 'y',
value: 83
}, {
year: 2018,
name: 'z',
value: 7
}];
console.log(_.values(_.reduce(data,
function(memo, v) {
if (!memo[v.year])
memo[v.year] = {
year: v.year
};
memo[v.year][v.name] = v.value;
return memo;
}, {}
)));
А как бы вы сделали это с помощью чистых функций, не трогая передаваемый аккумулятор memo?