强调每个并扩展
underscore each and extend
大家好,我很难理解我该如何解决问题。
我有 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>
任何人都可以帮助我了解我做错了什么?
我还不是 "satisfied" 预期的结果,但我会试一试。
这将在同一个数组中连续添加天数,没有任何分隔。
[
{ 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);
我相信如果您简化 addTimeSlot
函数,您会得到想要的结果。
addTimeSlot = function(x, index) {
_.extend(x.timeSlot, {
available: true,
placeAfter: "",
placeBefore: "",
slotNumber: index
})
}
如果我没理解错的话,你的 slotNumber
属性似乎只是索引号。由于您在 each
方法中使用 addTimeSlot
函数,因此您可以只使用索引号本身。
大家好,我很难理解我该如何解决问题。
我有 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>
任何人都可以帮助我了解我做错了什么?
我还不是 "satisfied" 预期的结果,但我会试一试。
这将在同一个数组中连续添加天数,没有任何分隔。
[
{ 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);
我相信如果您简化 addTimeSlot
函数,您会得到想要的结果。
addTimeSlot = function(x, index) {
_.extend(x.timeSlot, {
available: true,
placeAfter: "",
placeBefore: "",
slotNumber: index
})
}
如果我没理解错的话,你的 slotNumber
属性似乎只是索引号。由于您在 each
方法中使用 addTimeSlot
函数,因此您可以只使用索引号本身。