У меня есть следующий объект, и я хочу изменить все значения ключа «выборы» с «да, нет» на «показать, скрыть».
Я пытался создать функцию рекурсии для l oop над подэлементами объекта - но по какой-то причине я не могу заставить его работать ...
var foo = {
"data": [
{
"body": [
{
"id": "title",
"label": "title",
"subType": "title",
"type": "text"
},
{
"id": "page1",
"label": "Home",
"choices": [
"show",
"hide"
],
"childrenItems": [
{
"id": "subMenu1",
"label": "Gallery",
"choices": [
"yes",
"no"
],
"childrenItems": [
{
"id": "subMenu2",
"label": "Artists",
"choices": [
"yes",
"no"
],
"childrenItems": [
{
"id": "modernisem",
"label": "Modernisem"
},
{
"id": "contemporery",
"label": "Contemporery"
}
]
}
]
}
]
}
]
}
]
}
function setQuestionnaireChoises(prmData) {
return getNestedElements(prmData)
}
function getNestedElements(prmData){
if(!isObject && Array.isArray(prmData)){
return getArrItems(prmData);
}else{
return getObjItems(prmData);
}
}
function getArrItems(prmData){
for (let index = 0; index < prmData.length; index++) {
let arrItem = prmData[index];
if(isObject){
return getObjItems(arrItem)
}else{
return getArrItems(arrItem)
}
}
}
function getObjItems(prmData){
for (const key in prmData) {
let objItem = prmData[key];
if(key == 'choices'){
return objItem[key] = ["show, hide"]
}else{
return objItem[key]
}
}
}
function isObject(prmObj) {
return prmObj !== null && typeof prmObj === 'object' && Array.isArray(prmObj) === false ? true : false;
}
setQuestionnaireChoises(foo)
Моя цель - манипулировать объектом, чтобы возвращать себя с изменениями выбора .... Спасибо.
JsBin