Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用下划线js复制列表项_Javascript_Angularjs_Underscore.js - Fatal编程技术网

Javascript 使用下划线js复制列表项

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

例如,我有一个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 = [
    {'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);