我正在尝试为课程的燃尽图计算数据。该课程有开始和结束日期,练习次数以及实际学生的开始和结束日期。我有来自服务器的数据JSON和课程数据。我处理。首先,我正在计算totalExcercisesCount
,然后计算学生完成本课程的天数。毕竟,我得到了下一个数据对象:
const chartDataObj = {
idealBurn: [],
actualBurn: [],
idealIncrement: 0,
totalExcercisesCount: 12,
totalExercisesDoneCount: 4,
timeLine: {
courseFrom: "2018-09-10",
courseTo: "2019-06-21",
start: "2018-09-11",
finish: "2018-10-01",
totalDays: 20,
}
}
建立理想路线后,出现第一个问题。我正尝试下一步,
chartDataObj.idealIncrement = Math.floor(
chartDataObj.timeLine.totalDays / chartDataObj.totalExcercisesCount
);
for (i = 0; i <= chartDataObj.timeLine.totalDays - 1; i++) {
chartDataObj.idealBurn.push(chartDataObj.idealIncrement * (i + 1));
}
chartDataObj.idealBurn.reverse();
我要完成12个练习,但是第二天显示为19。我在这里做错了什么?
然后我需要填写实际刻录数据。但是问题是,如何根据练习完成的日期将其填充并显示在图表上?我的意思是在我的最终dataObject中,我只有totalExercisesDoneCount
,但在初始JSON中,我有关于锻炼结束日期的信息。我应该按日期对它们进行分组吗?
我还有一个codepen,其中包含图表和所有代码。任何帮助将不胜感激。谢谢
答案 0 :(得分:0)
我要完成12项练习,但第二天显示 19.我在这里做什么错了?
您对calculateIdealIncrement
的计算有2个问题。您正在计算每次运动的天数...应该是每天的运动,即理想情况下每天应该完成多少运动才能达到理想的燃烧效果。另外,如果结果是例如,不要使用floor
舍入为整数,而应将其保留为小数。每天进行0.5次练习就可以了。
然后我需要填写实际刻录数据。但是问题是,如何 根据日期填写练习完成并显示在 图形?我的意思是在我最终的dataObject中 totalExercisesDoneCount,但是在初始JSON中,我有关于日期的信息 练习结束时。我应该按日期对它们进行分组吗?
有几种方法可以解决此问题。我不会使用分组方式,因为(1)无法正确访问嵌套的exercise_details
(2)您不想按日期分组,您想获取开始日期和练习之间的天数差异完成日期。因此,我将从类似于getRemainExercisesCount
的代码开始,在其中您访问每个finished_time
,获取带有开始日期的差异,构建一个数组,该数组存储每天完成的练习数,然后使用该数组填充实际的练习数组。