Javascript 使用下划线js复制列表项
例如,我有一个json,上面有一些日期Javascript 使用下划线js复制列表项,javascript,angularjs,underscore.js,Javascript,Angularjs,Underscore.js,例如,我有一个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'} ]; 我想使用下划线将此事件减半(只是为了使想法更简单)。我想要的输出是这样的 jsonEvents
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'}
];
我想使用下划线将此事件减半(只是为了使想法更简单)。我想要的输出是这样的
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项目,我希望BarrelareJS类能够做到这一点。非常感谢。为此,您需要某种类型的
concatMap
,下划线不提供。您可以使用jQuery实现这一点,也可以自己构建:
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)
];
});
它必须是一个深度副本(不同的变量)还是可以是同一个引用?我有一个副本。我使用了$scope.jsonEvents=angular.copy($scope.jsonOriginalEvents);