【发布时间】:2017-07-19 09:23:24
【问题描述】:
几周前I asked a question关于如何重新排列数据结构并收到了这个解决方案:
var data = [{ timeline_map: { "2017-05-06": 770, "2017-05-07": 760, "2017-05-08": 1250 } }, { timeline_map: { "2017-05-06": 590, "2017-05-07": 210, "2017-05-08": 300 } }, { timeline_map: { "2017-05-06": 890, "2017-05-07": 2200, "2017-05-08": 1032 } }],
grouped = data.reduce(function (hash) {
return function (r, o) {
Object.keys(o.timeline_map).forEach(function (k) {
if (!hash[k]) {
hash[k] = [k];
r.push(hash[k]);
}
hash[k].push(o.timeline_map[k]);
});
return r;
};
}(Object.create(null)), []);
console.log(grouped);
但是再看一遍我不完全确定它是如何工作的 我以前没有见过在 reduce 中返回函数的概念。显然它有效,所以一定有一些原因,但我想澄清一下。
如何在reduce“工作”的这个应用程序中返回一个函数?
【问题讨论】:
标签: javascript ecmascript-6 reduce