javascript - 修改对象内部的值
问题描述
我正在尝试更改从 api 返回的对象,使其具有与我的应用程序中的另一个数据集类似的结构,并将它们推送到一个数组中。这样我就可以将此数据添加到我的原始数据中。但是我的 reduce 函数得到了一个奇怪的结果。
数据是这样进来的:
{
count: 4,
datapoints: [
{
Date: "2021-05-22",
score: 0,
},
{
Date: "2021-05-23",
score: 0,
},
{
Date: "2021-05-24",
score: 0,
},
{
Date: "2021-05-25",
score: 114,
},
],
};
我有一个如下所示的 reduce 函数:
const riskScores = await api.PCC.riskAssessment(userID, startdate, endDate);
const riskScoresFormatted = riskScores.datapoints.reduce((result, data) => {
const scores = result["riskAssessment"] || [];
scores.push({
value: data.score,
unit: "none",
recordedDate: data.Date,
method: "none",
});
result["riskAssessment"] = scores;
return result;
});
当我安慰riskScoresFormatted
我得到一些看起来像我想要的东西时,它的出现是新格式化的对象嵌套在第一个对象迭代中。像这样:
{ Date: "2021-05-22"
riskAssessment: [{value: 0, unit: "none", recorded...}{...}] <- the data I need
score: 0
}
所以我清楚地看到我做错了什么。我想用“riskAssessment”键将所有新格式化的对象推入一个数组中。谁能发现我做错了什么?
解决方案
在函数结束时提供空数组[]
作为数组的初始数据。reduce
const riskScoresFormatted = riskScores.datapoints.reduce((result, data) => {
const scores = result["riskAssessment"] || [];
scores.push({
value: data.score,
unit: "none",
recordedDate: data.Date,
method: "none",
});
result["riskAssessment"] = scores;
return result;
},[]);
输出
[
{
"value": 0,
"unit": "none",
"recordedDate": "2021-05-22",
"method": "none"
},
{
"value": 0,
"unit": "none",
"recordedDate": "2021-05-23",
"method": "none"
},
{
"value": 0,
"unit": "none",
"recordedDate": "2021-05-24",
"method": "none"
},
{
"value": 114,
"unit": "none",
"recordedDate": "2021-05-25",
"method": "none"
}
]
推荐阅读
- c# - 带有 IN 子句的 WHERE - C#
- excel - 输入数据时生成日期戳
- java - 而循环+睡眠减慢PC
- powershell - Powershell不在变量中存储foreach循环信息
- python - 在 Python 2.7 中将 C 级流打印保存到文件
- reactjs - MUI:如何在选定文本上显示工具提示组件?
- php - 使用 PHP 显示来自 SQLITE 数据库的 BLOB 数据
- composer-php - 带有消息“找不到驱动程序”的 Windows 10 PDOException Laravel 5.6.33 Wampserver 3.1.7 x86
- c - C - 如何解决 Invalid read of size 1 valgrind 错误
- javascript - 如何将抓取 YouTube 标题的 jQuery 转换为功能