2017-05-25 91 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/