【发布时间】:2018-10-03 15:13:05
【问题描述】:
我有一个包含结束日期和开始日期的对象数组。但日期之间的时间段可能跨越午夜。如果他们这样做,我希望用两个对象替换该对象,第一个是前一个开始日期,一个是午夜结束日期。第二个开始时间是第二天 00:00,结束日期是之前的时间。
例如,如果数组包含这样的对象,
{
"start": "2016-11-04 22:00",
"end": "2016-11-05 03:00"
}
我想用两个对象替换那个对象,
{
"start": "2016-11-04 22:00",
"end": "2016-11-04 24:00"
},
{
"start": "2016-11-05 00:00",
"end": "2016-11-05 03:00"
}
这是我使用data.push() 的尝试。显然这不是这样做的方法:
d3.json("data.json", function(data) {
var parseTime = d3.timeParse("%Y-%m-%d %H:%M");
data.forEach(function(d) {
d.commence = parseTime(d.start);
d.conclude = parseTime(d.end);
if (d.commence.getDay() != d.conclude.getDay()) {
midnight = d.commence.getFullYear() + "-" + d.commence.getMonth() + "-" + d.commence.getDay() + " 24:00";
morning = d.conclude.getFullYear() + "-" + d.conclude.getMonth() + "-" + d.conclude.getDay() + " 00:00";
data.push({
"start": d.start,
"end": midnight
}, {
"start": morning,
"end": d.end
})
}
});
...
那么当我遍历对象数组时,如何添加或删除对象呢?
数据是这样开始的,
[
{
"start": "2016-11-01 12:00",
"end": "2016-11-01 22:00"
},
{
"start": "2016-11-02 02:00",
"end": "2016-11-02 18:00"
},
{
"start": "2016-11-03 09:00",
"end": "2016-11-03 12:00"
},
{
"start": "2016-11-04 22:00",
"end": "2016-11-05 03:00"
},
{
"start": "2016-11-06 12:00",
"end": "2016-11-06 23:00"
}
]
在控制台中我可以看到它最终看起来像这样,
[
{
"start": "2016-11-01 12:00",
"end": "2016-11-01 22:00",
"commence": "2016-11-01T12:00:00.000Z",
"conclude": "2016-11-01T22:00:00.000Z"
},
{
"start": "2016-11-02 02:00",
"end": "2016-11-02 18:00",
"commence": "2016-11-02T02:00:00.000Z",
"conclude": "2016-11-02T18:00:00.000Z"
},
{
"start": "2016-11-03 09:00",
"end": "2016-11-03 12:00",
"commence": "2016-11-03T09:00:00.000Z",
"conclude": "2016-11-03T12:00:00.000Z"
},
{
"start": "2016-11-04 22:00",
"end": "2016-11-05 03:00",
"commence": "2016-11-04T22:00:00.000Z",
"conclude": "2016-11-05T03:00:00.000Z"
},
{
"start": "2016-11-06 12:00",
"end": "2016-11-06 23:00",
"commence": "2016-11-06T12:00:00.000Z",
"conclude": "2016-11-06T23:00:00.000Z"
},
{
"start": "2016-11-04 22:00",
"end": "2016-10-5 24:00"
},
{
"start": "2016-10-6 00:00",
"end": "2016-11-05 03:00"
}
]
完整代码在github 上,演示在gh-pages 上运行。
任何建议将不胜感激,
谢谢
【问题讨论】:
标签: arrays object d3.js replace