嗨,伙计们,我很难理解如何解决问题。
我有7个日期,我必须为每个日期添加六个不同时间值的值,结果需要看一下。
{
"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 :(得分: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);
答案 1 :(得分:0)
我相信如果您简化addTimeSlot
功能,您将获得所需的结果。
addTimeSlot = function(x, index) {
_.extend(x.timeSlot, {
available: true,
placeAfter: "",
placeBefore: "",
slotNumber: index
})
}
&#13;
如果我理解正确,看起来您的slotNumber
属性只是索引号。由于您在addTimeSlot
方法中使用each
函数,因此您可以自己使用索引号。