答案是一个对象数组,我需要过滤以实现所需的输出。
const answers = [
{
"surveyVersion": "5",
"id": "550259bd-2164-4f5b-b477-49cd2afc5829",
"surveyId": "123ebeff-9b48-4637-ac63-f0fce9f1abb8",
"surveyName": "Compass",
"createdAt": 1585244952251,
"survey": [
{
"data": {
"statement": "De 0 a 10, qual a chance de você RECOMENDAR o Compass?",
"answer": {
"label": "7",
"value": "7"
}
}
},
{
"data": {
"statement": "De 0 a 10, qual a nota voce dar para a qualidade do atendimento?",
"answer": {
"label": "7",
"value": "6"
}
}
},
{
"data": {
"statement": "De 0 a 10, qual a nota voce da para o interior o Compass?",
"answer": {
"label": "7",
"value": "8"
}
}
}
]
},
{
"surveyVersion": "5",
"id": "c720e777-5085-4493-bed9-c70bc311f47d",
"surveyId": "123ebeff-9b48-4637-ac63-f0fce9f1abb8",
"surveyName": "Compass",
"createdAt": 1585244952251,
"survey": [
{
"data": {
"statement": "De 0 a 10, qual a chance de você RECOMENDAR o Compass?",
"answer": {
"label": "7",
"value": "3"
}
}
},
{
"data": {
"statement": "De 0 a 10, qual a nota voce dar para a qualidade do atendimento?",
"answer": {
"label": "7",
"value": "4"
}
}
},
{
"data": {
"statement": "De 0 a 10, qual a nota voce da para o interior o Compass?",
"answer": {
"label": "7",
"value": "5"
}
}
}
]
}
]
我必须为调查属性数组内的每个数据对象创建一个Key [data.statement]:Value [data.answer.value]。
所需的输出:
[
{
"surveyVersion": "5",
"id": "550259bd-2164-4f5b-b477-49cd2afc5829",
"surveyId": "123ebeff-9b48-4637-ac63-f0fce9f1abb8",
"surveyName": "Compass",
"createdAt": 1585244952251,
"De 0 a 10, qual a chance de você RECOMENDAR o Compass?":"7" ,
"De 0 a 10, qual a nota voce dar para a qualidade do atendimento?":"6",
"De 0 a 10, qual a nota voce da para o interior o Compass?":"8"
},
{
"surveyVersion": "5",
"id": "c720e777-5085-4493-bed9-c70bc311f47d",
"surveyId": "123ebeff-9b48-4637-ac63-f0fce9f1abb8",
"surveyName": "Compass",
"createdAt": 1585244952251,
"De 0 a 10, qual a chance de você RECOMENDAR o Compass?":"3" ,
"De 0 a 10, qual a nota voce dar para a qualidade do atendimento?":"4",
"De 0 a 10, qual a nota voce da para o interior o Compass?":"5"
}
]
我尝试了两种方法,一种使用地图:
let values = answers.map(item => ({
...item,
id: item.id,
survey: item.surveyName,
answer: item.survey.map(function(node) {
return {
[node.data.statement]: node.data.answer.value
};
})
}));
输出:
[{
"surveyName": "Compass",
"createdAt": 1585244952251,
"survey": "Compass",
"surveyVersion": "5",
"id": "550259bd-2164-4f5b-b477-49cd2afc5829",
"surveyId": "123ebeff-9b48-4637-ac63-f0fce9f1abb8",
"answer": [{
"De 0 a 10, qual a chance de você RECOMENDAR o Compass?": "7"
},
{
"De 0 a 10, qual a nota voce dar para a qualidade do atendimento?": "8"
},
{
"De 0 a 10, qual a nota voce da para o interior o Compass?": "6"
}
]
},
{
"surveyName": "Compass",
"createdAt": 1585244949217,
"survey": "Compass",
"surveyVersion": "4",
"id": "5156be07-2dc4-47f6-b7c4-1fc5089db0b6",
"surveyId": "123ebeff-9b48-4637-ac63-f0fce9f1abb8",
"answer": [{
"De 0 a 10, qual a chance de você RECOMENDAR o Compass?": "3"
},
{
"De 0 a 10, qual a nota voce dar para a qualidade do atendimento?": "4"
},
{
"De 0 a 10, qual a nota voce da para o interior o Compass?": "5"
}
]
}
]
还有另一个使用解构的方法,这是一个了不起的方法,但是我无法弄清楚如何在调查数组内部循环。
for (const {id:id,surveyName:surveyName,surveyVersion:surveyVersion,surveyId:surveyId,createdAt:createdAt,survey:[{data:{statement,answer:{value}}}]} of answers)
output = {id,surveyName,surveyVersion,surveyId,createdAt,statement:value}
输出:
{
"id": "e233582b-06b7-4257-98a8-8e669a8a341d",
"surveyName": "Compass",
"surveyVersion": "1",
"surveyId": "123ebeff-9b48-4637-ac63-f0fce9f1abb8",
"createdAt": 158524492683,
"statement": "De 0 a 10, qual a chance de você RECOMENDAR o Compass?",
"value": "7"
}
感谢任何帮助
您可以使用.map()
,然后在其中使用.forEach()
:
const output = answers.map(child => {
child.survey.forEach(item => child[item.data.statement] = item.data.answer.value);
delete child.survey;
return child;
})
console.log(output);
const answers = [
{
"surveyVersion": "5",
"id": "550259bd-2164-4f5b-b477-49cd2afc5829",
"surveyId": "123ebeff-9b48-4637-ac63-f0fce9f1abb8",
"surveyName": "Compass",
"createdAt": 1585244952251,
"survey": [
{
"data": {
"statement": "De 0 a 10, qual a chance de você RECOMENDAR o Compass?",
"answer": {
"label": "7",
"value": "7"
}
}
},
{
"data": {
"statement": "De 0 a 10, qual a nota voce dar para a qualidade do atendimento?",
"answer": {
"label": "7",
"value": "6"
}
}
},
{
"data": {
"statement": "De 0 a 10, qual a nota voce da para o interior o Compass?",
"answer": {
"label": "7",
"value": "8"
}
}
}
]
},
{
"surveyVersion": "5",
"id": "c720e777-5085-4493-bed9-c70bc311f47d",
"surveyId": "123ebeff-9b48-4637-ac63-f0fce9f1abb8",
"surveyName": "Compass",
"createdAt": 1585244952251,
"survey": [
{
"data": {
"statement": "De 0 a 10, qual a chance de você RECOMENDAR o Compass?",
"answer": {
"label": "7",
"value": "3"
}
}
},
{
"data": {
"statement": "De 0 a 10, qual a nota voce dar para a qualidade do atendimento?",
"answer": {
"label": "7",
"value": "4"
}
}
},
{
"data": {
"statement": "De 0 a 10, qual a nota voce da para o interior o Compass?",
"answer": {
"label": "7",
"value": "5"
}
}
}
]
}
]
const output = answers.map(child => {
child.survey.forEach(item => child[item.data.statement] = item.data.answer.value);
delete child.survey;
return child;
})
console.log(output);
.as-console-wrapper { max-height: 100% !important; top: 0; }
输出:
[
{
"surveyVersion": "5",
"id": "550259bd-2164-4f5b-b477-49cd2afc5829",
"surveyId": "123ebeff-9b48-4637-ac63-f0fce9f1abb8",
"surveyName": "Compass",
"createdAt": 1585244952251,
"De 0 a 10, qual a chance de você RECOMENDAR o Compass?": "7",
"De 0 a 10, qual a nota voce dar para a qualidade do atendimento?": "6",
"De 0 a 10, qual a nota voce da para o interior o Compass?": "8"
},
{
"surveyVersion": "5",
"id": "c720e777-5085-4493-bed9-c70bc311f47d",
"surveyId": "123ebeff-9b48-4637-ac63-f0fce9f1abb8",
"surveyName": "Compass",
"createdAt": 1585244952251,
"De 0 a 10, qual a chance de você RECOMENDAR o Compass?": "3",
"De 0 a 10, qual a nota voce dar para a qualidade do atendimento?": "4",
"De 0 a 10, qual a nota voce da para o interior o Compass?": "5"
}
]