Estoy tratando de construir un objeto JavaScript a partir de las entradas de un formulario dinámico. Esto es lo que estoy tratando de hacer:
fieldTickets = []; thisWeek = randomDateOnSunday; weekDay = randomWeekDayWithinTheWeek; fieldTickets[thisWeek]['days'][weekDay]['fieldTechs'].push({name: fieldTechName}); Como puede ver, tengo algunas claves que son variables dinámicas y algunas que están definidas ('days' y 'fieldTechs' son siempre las mismas, pero la semana y el día de la semana cambiarán). Desafortunadamente, cada vez que trato de ejecutar esto, incluso en violines, aparece como un error Cannot read properties of undefined (reading 'days') . He estado lidiando con esto durante horas y no puedo resolverlo.
¿Cómo se construye una matriz/objeto anidado con claves dinámicas?
Pensé que lo crearía automáticamente si no existiera usando esa sintaxis ... obviamente, estoy equivocado, pero ¿hay otra forma más corta que una tonelada de declaraciones si existe?
JavaScript no lo creará automáticamente, pero puede hacerlo sin if , intente algo como a continuación
const thisWeek = '12'; //randomDateOnSunday; const weekDay = 'Sunday'; // randomWeekDayWithinTheWeek; fieldTickets = { [thisWeek]: { days: { [weekDay]: { fieldTechs: [] } } } }; console.log('fieldTickets:', fieldTickets); // pushing fieldTickets[thisWeek]['days'][weekDay]['fieldTechs'].push({ name: "Hello" }); // pushing again fieldTickets[thisWeek]['days'][weekDay]['fieldTechs'].push({ name: "World" }); console.log('fieldTickets 2:', fieldTickets);