У меня есть JSON (сгенерированный giftpeg ), и есть некоторые бесполезные для меня узлы, такие как "format:" moodle "(см. Код):
[
{
"type": "MC",
"title": null,
"stem":
{
"format":"moodle",
"text": "What is the main cause of the seasons on the earth?"
},
"hasEmbeddedAnswers": false,
"globalFeedback": null,
"choices":
[ {
"isCorrect": false,
"weight": null,
"text":
{
"format": "moodle",
"text": "the earth's elliptical (slightly oval) orbit around the sun" }, "feedback": null
},
{
"isCorrect": true,
"weight": null,
"text":
{ "format": "moodle",
"text": "the tilt of earth's axis with respect to the sun"
},
"feedback": null
},
{
"isCorrect": false,
"weight": null,
"text":
{
"format": "moodle",
"text": "the northern hemisphere has twice the land mass than the southern hemisphere"
},
"feedback": null
}
]
}
]
До сих пор я могу удалить «форматирующие» узлы (я думаю, что я делаю это правильно), но есть некоторая избыточность, такая как:
"text":{
"text": "foo"
}
цель состоит в том, чтобы преобразовать его (неразрушающим образом) в:
"text": "foo"
Это мой код (пытаюсь быть настолько функциональным, насколько я могу):
formatedQuestions(jsonItem) {
return jsonItem.map(question => {
question.choices.map(choice => {
delete choice.text.format;
choice = Object.assign(choice, choice.text);
delete choice.text.text;
return choice;
});
delete question.stem.format;
return question;
});
Я могу переместить его, но он изменит исходный JSON. Поэтому каждый раз, когда я его называюизменения. И это проблема.
Это перемещает значение «вверх», но это то, что меняет оригинал
choice = Object.assign(choice, choice.text);
Если у вас есть какие-либо предложения, помимо решения, чтобы сделать его более функциональными эффективный будет с благодарностью.