Estoy tratando de crear una matriz asociativa de fechas y estilo. Estoy esperando una matriz como
{ dates: [{day: 1, month: 12, year: 2021}, {day: 15, month: 12, year: 2021}], styleClass: 'test' },y mi codigo es
var markedDates = []; markedDates['dates'].push('day: 1, month: 12, year: 2021'); markedDates['dates'].push('day: 15, month: 12, year: 2021'); markedDates['styleClass'].push('test'); console.log(markedDates);que devuelve error
Problema 1: markedDates se han definido como una matriz ( [] ). Para definirlo como un objeto (que es lo que tiene como resultado esperado), use {} . (No hay tal cosa como una 'matriz asociativa' en JavaScript; las matrices usan 0 , 1 , etc. como índices. Los objetos usan 0 , 1 , key , another_key como índices [o claves, más precisamente]).
Problema 2: no ha definido la matriz de dates dentro de las fechas markedDates , lo que provocará un error de referencia.
Problema 3: está enviando cadenas a la matriz en lugar de objetos. Esto no generará un error, pero no producirá el resultado deseado.
Problema 4: está tratando de usar styleClass como una matriz; es solo una propiedad de cadena dentro de las markedDates .
Para corregir su código línea por línea (manteniendo la similitud con su código original):
var markedDates = {}; markedDates.dates = []; markedDates.dates.push({day: 1, month: 12, year: 2021}); markedDates.dates.push({day: 15, month: 12, year: 2021}); markedDates.styleClass = "test"; console.log(markedDates); .as-console-wrapper { max-height: 100% !important; top: auto; }Pero si tiene el resultado esperado definido estáticamente en la parte superior, puede asignarlo directamente a la variable como tal:
var markedDates = { dates: [{ day: 1, month: 12, year: 2021 }, { day: 15, month: 12, year: 2021 }], styleClass: 'test' }; console.log(markedDates);Cosas que debes considerar -
markedDate en el siguiente código.dates del campo interno como una matriz antes de insertarlo primero var markedDates = []; var markedDate = {}; markedDate['dates'] = []; markedDate['dates'].push({day: 1, month: 12, year: 2021}); markedDate['dates'].push({day: 15, month: 12, year: 2021}); markedDate['styleClass'] = 'test'; markedDates.push(markedDate); console.log(markedDates);