修改对象内部的值
Modifying the values inside an object
我正在尝试更改从 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"
}
]
据我了解,您希望 riskAssessment
成为包含新对象的新数组。
您正在将 scores
设置为 riskAssessment
的先前值。它会继承以前的状态,而你只是在添加它。尝试直接将其初始化为空数组,然后将您的值推送给它。
const riskScoresFormatted = riskScores.datapoints.reduce((result, data) => {
const scores = [];
scores.push({
value: data.score,
unit: "none",
recordedDate: data.Date,
method: "none",
});
result["riskAssessment"] = scores;
return result;
});
我正在尝试更改从 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"
}
]
据我了解,您希望 riskAssessment
成为包含新对象的新数组。
您正在将 scores
设置为 riskAssessment
的先前值。它会继承以前的状态,而你只是在添加它。尝试直接将其初始化为空数组,然后将您的值推送给它。
const riskScoresFormatted = riskScores.datapoints.reduce((result, data) => {
const scores = [];
scores.push({
value: data.score,
unit: "none",
recordedDate: data.Date,
method: "none",
});
result["riskAssessment"] = scores;
return result;
});