javascript - 减少将数据包装在数组中的函数
问题描述
我有一个 reduce 函数,可以按照我需要的方式格式化我的数据,但唯一的问题是数据嵌套在数组中。我需要删除外部数组或只是阻止reduce函数添加它,但我所做的每一次阻止reducer将数据包装在数组中的尝试都会破坏我的代码。理想情况下,我希望我的减速器不将数据包装在数组中,但如果不可能从减速器内部干净地删除我需要的数组,这似乎是唯一的解决方案:
我的数据如下所示:
{
count: 4,
datapoints: [
{
Date: "2021-05-05",
score: 0,
},
{
Date: "2021-05-12",
score: 0,
},
{
Date: "2021-05-30",
score: 0,
},
{
Date: "2021-06-03",
score: 114,
},
],
};
我的减速器函数和 api 调用:
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",
type: "riskAssessment",
});
result["riskAssessment"] = scores;
return result;
}, []);
输出:
[riskAssessment: [{…}, {…}, {…}, {…}] ]
我试过只使用riskScoresFormatted[0]
返回未定义的索引。riskScoresFormatted.slice(1)
只返回一个空数组。我也尝试过像这样针对第一个项目,riskScoresFormatted.riskAssessment
但该值有时为空,因此稍后会导致错误。
解决方案
尝试将最后的 reduce 参数从[]
to更改{}
,我认为你会有更好的运气。
const riskScoresFormatted = riskScores.datapoints.reduce((result, data) => {
const scores = result["riskAssessment"] || [];
scores.push({
value: data.score,
unit: "none",
recordedDate: data.Date,
method: "none",
type: "riskAssessment",
});
result["riskAssessment"] = scores;
return result;
}, {});
或者,Array.map()
改用:
const riskScores = {
count: 4,
datapoints: [{
Date: "2021-05-05",
score: 0,
},
{
Date: "2021-05-12",
score: 0,
},
{
Date: "2021-05-30",
score: 0,
},
{
Date: "2021-06-03",
score: 114,
},
],
};
var riskScoresFormatted = riskScores.datapoints.map((data) => ({
value: data.score,
unit: "none",
recordedDate: data.Date,
method: "none",
type: "riskAssessment",
}));
console.log(riskScoresFormatted);
推荐阅读
- c# - C#内部布尔?变量的名称; 这是什么意思
- arm - 在 QEMU 中运行带有 FPU 的 Arm cortex M4
- php - 升级到 Laravel 7 后日期未转换
- c# - 创建对象的单元测试方法,麻烦断言
- javascript - 在 JavaScript 中评估字符串时的错误
- firebase - 在 null 上调用了方法“[]”。接收方:null 尝试调用:[]("color")
- php - 重定向时会话未写入
- java - Spring boot和mySQL获取一对多关系的请求
- mysql - 如果是客户的第一个订单,计算订单日期
- html - 初学者:为什么HTML元素包括元素不调整高度