我有一个带有一些日期的json,例如
jsonEvents = [
{'event_name':'event1','event_start':'2013-10-23','event_stop':'2013-10-29'},
{'event_name':'event2','event_start':'2013-10-23','event_stop':'2013-10-25'}
];
我想使用underscoreJS将这些事件减少一半(只是为了让这个想法变得更简单)。我想要的输出看起来像这样。
jsonEvents = [
{'event_name':'event1','event_start':'2013-10-23','event_stop':'2013-10-26'},
{'event_name':'event1','event_start':'2013-10-26','event_stop':'2013-10-29'},
{'event_name':'event2','event_start':'2013-10-23','event_stop':'2013-10-24'},
{'event_name':'event2','event_start':'2013-10-24','event_stop':'2013-10-25'}
];
我希望我能以一种简单的方式做到这一点,我正在开发一个angularJS项目,我希望underscoreJS类可以做到这一点。非常感谢你。
答案 0 :(得分:0)
你需要某种concatMap
,这是Underscore不提供的。您可以使用jQuery的$.map
执行此操作,也可以自行构建:
var concatMap = _.compose(_.flatten, _.map);
现在,您可以迭代数组并为每个项返回两个事件的数组:
function createEvent(name, start, end) {
return {
"event_name": name,
"event_start": format(start),
"event_stop": format(end)
};
}
jsonEvents = concatMap(jsonEvents, function (event) {
var from = new Date(event.event_start),
to = new Date(event.event_stop),
mid = new Date( (+startDate + stopDate) / 2 );
return [
createEvent(event.event_name, from, mid),
createEvent(event.event_name, mid, to)
];
});