2017-05-25 74 views
0

嗨,大家好我很难理解我该如何解决一些问题。每个下划线和延伸

我有7个日期,我必须为每个日期添加6个不同时隙数的值,结果需要看这个。

{ 
"dateTime": "2017-05-25T09:20:58.846Z", 
    "timeSlotArray": 
     { 
     "available": true, 
     "placeAfter": "string", 
     "placeBefore": "string", 
     "slotNumber": 0 
     } 
} 

{ 
"dateTime": "2017-05-25T09:20:58.846Z", 
    "timeSlotArray": 
     { 
     "available": true, 
     "placeAfter": "string", 
     "placeBefore": "string", 
     "slotNumber": 1 
     } 
} 
{ 
"dateTime": "2017-05-25T09:20:58.846Z", 
    "timeSlotArray": 
     { 
     "available": true, 
     "placeAfter": "string", 
     "placeBefore": "string", 
     "slotNumber": 2 
     } 
} 

{ 
"dateTime": "2017-05-25T09:20:58.846Z", 
    "timeSlotArray": 
     { 
     "available": true, 
     "placeAfter": "string", 
     "placeBefore": "string", 
     "slotNumber": 3 
     } 
} 

{ 
"dateTime": "2017-05-25T09:20:58.846Z", 
    "timeSlotArray": 
     { 
     "available": true, 
     "placeAfter": "string", 
     "placeBefore": "string", 
     "slotNumber": 4 
     } 
} 

{ 
"dateTime": "2017-05-25T09:20:58.846Z", 
    "timeSlotArray": 
     { 
     "available": true, 
     "placeAfter": "string", 
     "placeBefore": "string", 
     "slotNumber": 5 
     } 
} 

但我不能每个号码添加到器SlotNumber

var startDate = new Date() 
 
var endDate = new Date(startDate.getTime() + 7 * 24 * 60 * 60 * 1000); 
 

 
var date = new Array() 
 

 
for (var iDate = new Date(); iDate < endDate; iDate.setDate(iDate.getDate() + 1)) { 
 
    date.push(iDate) 
 
} 
 

 
var numbers = [0, 1, 2, 3, 4, 5] 
 

 
addDateData = function(x) { 
 
    return { 
 
    date: x, 
 
    timeSlot: {} 
 
    } 
 
} 
 

 
addTimeSlot = function(x) { 
 
    _.each(numbers, function(y) { 
 
    _.extend(x.timeSlot, { 
 
     available: true, 
 
     placeAfter: "", 
 
     placeBefore: "", 
 
     slotNumber: y 
 
    }) 
 
    }) 
 
} 
 

 
var data = _.chain(date) 
 
    .map(addDateData) 
 
    .each(addTimeSlot) 
 
    .value() 
 
    
 
console.log(data);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

有人能帮助我理解我在做什么错?

+0

预期的结果是不清楚我...如果结果是“天”,其中每个“天”有时隙的数组的数组:'[{天:“2017-05 -25“,时隙:[0,1,2,...]},{day:”2017-05-26“,时隙:[0,1,2,...]}]'?或者每天有一个时隙的天(天*时隙)“天”阵列:'[{day:“2017-05-25”,timeslots:[0]},{day:“2017-05-25”,时间间隔:[1]},{天:“2017-05-26”,时隙:[0]},{天:“2017-05-26”,时隙:[1]}]'? – Andreas

+0

嗨安得烈感谢您花时间回答我的问题。 我更新了我的问题的期望输出,这个结果是一个日期,应该是所有七个日期相同。 – PrinceZee

回答

1

我对于预期的结果还不是那么“满意”,但我会给它一个机会。

这将在相同的数组中连续添加日期而没有任何分隔。

[ 
    { day: 1, timeSlot: 0 }, 
    { day: 1, timeSlot: 1 }, 
    { day: 2, timeSlot: 0 }, 
    { day: 2, timeSlot: 1 }, 
    //... 
] 

var startDate = new Date(), 
 
    endDate = new Date(startDate.getTime() + 7 * 24 * 60 * 60 * 1000), 
 
    numbers = [0, 1, 2, 3, 4, 5], 
 
    date = []; 
 

 
for (var iDate = new Date(); iDate < endDate; iDate.setDate(iDate.getDate() + 1)) { 
 
    numbers.forEach(function(n) { 
 
    date.push({ 
 
     date: new Date(iDate), 
 
     timeSlot: { 
 
     available: true, 
 
     placeAfter: "string", 
 
     placeBefore: "string", 
 
     slotNumber: n 
 
     } 
 
    }); 
 
    }); 
 
} 
 

 
console.log(date);

+0

感谢您的拍摄andreas,但它似乎是循环抛出相同的日期https://jsfiddle.net/xxeorLjf/ – PrinceZee

+0

@PrinceZee Argh ...错误的版本...我更新了代码:) – Andreas

0

我相信,如果您简化addTimeSlot功能,你会得到你正在寻找的结果。

addTimeSlot = function(x, index) { 
 
    _.extend(x.timeSlot, { 
 
    available: true, 
 
    placeAfter: "", 
 
    placeBefore: "", 
 
    slotNumber: index 
 
    }) 
 
}

如果我理解正确的,它看起来像你的slotNumber属性只是索引号。由于您在each方法中使用addTimeSlot函数,因此您可以直接使用索引编号。

演示:https://jsfiddle.net/yffvw126/