const form = {
form_pages: [{
id: 1,
name: 'page first',
form_sections: [{
id: 1,
name: 'sec first',
form_items: [{
id: 1,
name: 1,
value: 0
}, {
id: 2,
name: 2,
value: 0
}, {
id: 3,
name: 3,
value: 0
}]
}, {
id: 2,
name: 'sec second',
form_items: [{
id: 1,
name: 1,
value: 0
}, {
id: 2,
name: 2,
value: 0
}, {
id: 3,
name: 3,
value: 0
}]
}, {
id: 3,
name: 'sec third',
form_items: [{
id: 1,
name: 1,
value: 0
}, {
id: 2,
name: 2,
value: 0
}, {
id: 3,
name: 3,
value: 0
}]
}]
}, {
id: 2,
name: 'page second',
form_sections: [{
id: 1,
name: 'sec first',
form_items: [{
id: 1,
name: 1,
value: 0
}, {
id: 2,
name: 2,
value: 0
}, {
id: 3,
name: 3,
value: 0
}]
}, {
id: 2,
name: 'sec second',
form_items: [{
id: 1,
name: 1,
value: 0
}, {
id: 2,
name: 2,
value: 0
}, {
id: 3,
name: 3,
value: 0
}]
}, {
id: 3,
name: 'sec third',
form_items: [{
id: 1,
name: 1,
value: 0
}, {
id: 2,
name: 2,
value: 0
}, {
id: 3,
name: 3,
value: 0
}]
}]
}, {
id: 3,
name: 'page third',
form_sections: [{
id: 1,
name: 'sec first',
form_items: [{
id: 1,
name: 1,
value: 0
}, {
id: 2,
name: 2,
value: 0
}, {
id: 3,
name: 3,
value: 0
}]
}, {
id: 2,
name: 'sec second',
form_items: [{
id: 1,
name: 1,
value: 0
}, {
id: 2,
name: 2,
value: 0
}, {
id: 3,
name: 3,
value: 0
}]
}, {
id: 3,
name: 'sec third',
form_items: [{
id: 1,
name: 1,
value: 0
}, {
id: 2,
name: 2,
value: 0
}, {
id: 3,
name: 3,
value: 0
}]
}]
}]
};
function getFormItems(formPages) {
return formPages.length
? formPages.reduce((pages, {form_sections}) => {
return {
...pages,
...(form_sections || []).reduce((sections, {form_items}) => {
return {
...sections,
...(form_items || []).reduce((items, {id, display_type, template_answers}) => {
console.log('items: ', items);
return {
...items,
[id]: {
display_type,
template_answers
}
};
}, {})
};
}, {})
};
}, {})
: {};
}
const formItemId = 3;
const formSectionId = 2;
const formPageId = 2;
const formPage = form.form_pages.find((page) => page.id === formPageId);
const formSection = formPage.form_sections.find((section) => section.id === formSectionId);
const editedFormItem = formSection.form_items.find((item) => item.id === formItemId);
editedFormItem.value = 'aaaaaa';
// console.log(editedFormItem)
const newFormSection = {
...formSection,
form_items: formSection.form_items.map(item => item.id === formItemId ? editedFormItem : item)
};
// console.log(newFormSection)
const newFormPage = {
...formPage,
form_sections: formPage.form_sections.map(item => item.id === formSectionId ? newFormSection : item)
};
// console.log(newFormPage)
form.form_pages = form.form_pages.map(item => item.id === formPageId ? newFormPage : item);
// console.log(form);
console.log(getFormItems(form.form_pages));