【发布时间】:2022-01-19 22:46:21
【问题描述】:
因此,我编写了一段 Javascript(我知道)等效代码,我想将其转换为 dart,但我在让计数器递增时遇到了一些麻烦。
这是 Javascript 等价物:
data.assessments.data.forEach((assessment) => {
const { responses } = assessment.questionnaires[0];
responses.forEach((response) => {
response.value.forEach((moodValue) =>
moodArr.push({
value: toMoodMap(moodValue),
count: (moodValue || 0) + 1, // I know this is crazy. This is what I want to replicate
createdAt: moment(assessment.createdAt).format('YYYY-MM-DD'),
})
);
});
});
最终的数据集应如下所示:
[
{
"value": "Sad",
"count": 2,
"createdAt": "2021-12-08"
},
{
"value": "Happy",
"count": 1,
"createdAt": "2021-12-08"
},
{
"value": "Anxious",
"count": 5,
"createdAt": "2021-12-08"
},
{
"value": "Happy",
"count": 1,
"createdAt": "2021-12-08"
},
{
"value": "Tired",
"count": 4,
"createdAt": "2021-12-08"
},
{
"value": "Energetic",
"count": 3,
"createdAt": "2021-12-08"
},
{
"value": "Anxious",
"count": 5,
"createdAt": "2021-12-08"
},
{
"value": "Happy",
"count": 1,
"createdAt": "2021-12-08"
},
{
"value": "Sad",
"count": 2,
"createdAt": "2021-12-08"
},
{
"value": "Happy",
"count": 1,
"createdAt": "2021-12-08"
},
{
"value": "Happy",
"count": 1,
"createdAt": "2021-12-08"
},
{
"value": "Anxious",
"count": 5,
"createdAt": "2021-12-08"
},
{
"value": "Sad",
"count": 2,
"createdAt": "2021-12-08"
},
{
"value": "Anxious",
"count": 5,
"createdAt": "2021-12-08"
},
{
"value": "Anxious",
"count": 5,
"createdAt": "2021-12-08"
},
{
"value": "Tired",
"count": 4,
"createdAt": "2021-12-08"
},
{
"value": "Anxious",
"count": 5,
"createdAt": "2021-12-08"
},
{
"value": "Anxious",
"count": 5,
"createdAt": "2021-12-08"
},
{
"value": "Tired",
"count": 4,
"createdAt": "2021-12-09"
},
{
"value": "Anxious",
"count": 5,
"createdAt": "2021-12-09"
},
{
"value": "Sad",
"count": 2,
"createdAt": "2021-12-09"
},
{
"value": "Energetic",
"count": 3,
"createdAt": "2021-12-13"
},
{
"value": "Anxious",
"count": 5,
"createdAt": "2021-12-13"
},
{
"value": "Tired",
"count": 4,
"createdAt": "2021-12-14"
},
{
"value": "Happy",
"count": 1,
"createdAt": "2021-12-20"
}
]
虽然不是超级理想,但它可以完成分组条形图的工作。这次我试图复制它,但使用charts_flutter
这是我尝试过的:
for (var assessment in assessments) {
final List<dynamic> responses =
assessment.questionnaires![0].savedResponses;
final createdAt = assessment.createdAt as DateTime;
for (var response in responses) {
final moodValue = response['value'][0];
moodData.add(MoodReading(
value: Mood.mapMood(moodValue),
count: (response['value'][0] || 0) + 1, // this doesn't work
dateTime: createdAt,
));
}
}
我得到的错误是error: The operator '+' isn't defined for the type 'bool'. 和error: The operands of the operator '||' must be assignable to 'bool'.
有没有办法匹配类似那个 javascript 版本的东西?
【问题讨论】:
-
我不知道
moodValue在原始 JavaScript 代码中应该是什么,但我猜你可能想要像(moodValue ?? 0) + 1这样的东西(即,如果moodValue是 @987654330 @,使用默认值 0,然后加 1)。