He pasado una buena parte del día tratando de reemplazar matrices de un objeto anidado existente, pero no sé cómo hacerlo. Este es mi objeto original:
{ "id": "a8df1653-238a-4f23-fe42-345c5d928b34", "webSections": { "id": "x58654a9-283b-4fa6-8466-3f7534783f8", "sections": [ { "id": "92d7e428-4a5b-4f7e-bc7d-b761ca018922", "title": "Websites", "questions": [ { id: 'dee6e3a6-f207-f3db-921e-32a0b745557', text: 'Website questions', items: Array(11) } ] }, { "id": "79e42d88-7dd0-4f70-b6b4-dea4b4a64ef3", "title": "Blogs", "questions": [ ... ] }, { "id": "439ded88-d7ed0-de70-b6b4-dea4b4a64e840", "title": "App questions", "questions": [ ... ] } ] }Me gustaría reemplazar las matrices de preguntas en el objeto original o en una copia del mismo.
const newMenu = [ {id: '34bb96c7-1eda-4f10-8acf-e6486296f4dd', text: 'Website questions', items: Array(24)}, {id: '520c2d3f-6117-4f6a-904f-2477e3347472', text: 'Blog questions', item: Array(7)}, {id: '302b658a-9d8c-4f53-80f6-3f2275bfble', title: 'App questions', items: Array(14)} ]Estoy tratando de hacer esto por su índice pero desafortunadamente no funciona.
webSections.sections.forEach((item, index) => { return webSections.sections[index].questions, newMenu[index]); }¿Alguien ve lo que estoy haciendo mal?
El valor devuelto por la devolución de llamada pasada a forEach no se utilizará en ninguna parte.
Si desea evitar la mutación del objeto original y las preguntas de actualización, puede usar Array.prototype.map y la sintaxis de distribución de objetos.
const object = { "id": "a8df1653-238a-4f23-fe42-345c5d928b34", "webSections": { "id": "x58654a9-283b-4fa6-8466-3f7534783f8", "sections": [ { "id": "92d7e428-4a5b-4f7e-bc7d-b761ca018922", "title": "Websites", "questions": [ { id: 'dee6e3a6-f207-f3db-921e-32a0b745557', ... const updatedObject = { ...object, webSections: { ...object.webSections, sections: object.webSections.sections.map((section, index) => ({...section, questions: newMenu[index]})) } }Si solo quieres mutar el objeto original
object.webSections.sections.forEach((_, index) => { section.questions = newMenu[index] }) const newSections = myObj.webSections.sections.map((obj, index) => { const newQuestions = newItems[index]; return { ...obj, questions: [newQuestions], }; }); console.log(newSections);MyObj es el objeto principal. Esto producirá la nueva matriz de secciones que puede combinar con su objeto principal, supongo ...
@Ramesh Reddy tiene la respuesta más completa.