I am trying to create an associative array of dates and style. I am expecting an array like
{
dates: [{day: 1, month: 12, year: 2021}, {day: 15, month: 12, year: 2021}],
styleClass: 'test'
},
And my code is
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);
which returns error
Problem 1: markedDates
has been defined as an array ( []
). To define it as an object (which is what you have as your expected output), use {}
. (No such thing as an 'associative array' in JavaScript; arrays use 0
, 1
, etc. as indexes. Objects use 0
, 1
, key
, another_key
as indexes [or keys, more accurately].)
Problem 2: You haven't defined the dates
array within markedDates
which will cause a reference error.
Problem 3: You are pushing strings to the array instead of objects. This won't error, but won't produce the intended output.
Problem 4: You're trying to use styleClass
as an array - it's just a string property within the markedDates
.
To fix your code in the line-by-line manner (keeping similarity to your original code):
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; }
But if you've got your expected output statically defined at the top, you can just assign that directly to the variable as such:
var markedDates = { dates: [{ day: 1, month: 12, year: 2021 }, { day: 15, month: 12, year: 2021 }], styleClass: 'test' }; console.log(markedDates);
Things that you should consider -
markedDate
in the below code.dates
as an array before pushing into it first 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);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.