Я использую набор данных для рисования диаграммы с использованием D3.
Но у меня есть некоторые проблемы с обработкой данных, когда метод для решения этой проблемы использует цикл for для рисования диаграммы.
Вот мой код:
Данные:
[
var data = [
{
"id":100457,
"name":"CHEUNG SIU MING",
"collect_date": "2019-01-02 17:23:00",
"movement":[
{
"hospital":"CMC",
"case":"HN100000099",
"ward":"S15",
"bed":"56",
"start":"2019-01-01 18:45:00",
"end":""
}
]
},
{
"id":101369,
"name":"MA CHING",
"collect_date": "2019-01-03 09:51:00",
"movement":[
{
"hospital":"CMC",
"case":"HN100000133",
"ward":"S13",
"bed":"1",
"start":"2019-01-01 12:00:00",
"end":"2019-01-01 20:23:00"
},
{
"hospital":"CMC",
"case":"HN100000134",
"ward":"S13",
"bed":"6",
"start":"2019-01-02 07:34:00",
"end":"2019-01-02 19:13:00"
},
{
"hospital":"CMC",
"case":"HN100000134",
"ward":"S15",
"bed":"11",
"start":"2019-01-02 19:13:00",
"end":""
}
]
}
];
Печать кода штриховой диаграммы:
for (var n=0; n< data.length;n++){
svg.selectAll("rect")
.data(data[n].movement)
.enter()
.append("rect")
.attr("x",function(d,i){
return linear((new Date(d.start) - starttime)/cal_hour);
})
.attr("y",function(d,i){
return yScale(i);
})
.attr("width",function(d){
if (d.end =="")
return linear((endtime-new Date(d.start))/cal_hour);
else
return linear((new Date(d.end)-new Date(d.start))/cal_hour);
})
.attr("height",rectHeight-2)
.attr("fill",function(d){return ordinal(d.ward)});
}
МОЙ код работает, но он печатает только первыйнабор данных, что означает только запуск данных [0]. часть перемещения.В чем проблема?Я пытаюсь использовать console.log, проверьте это, цикл for успешно выполнен 2 раза.