Javascript 从JSON对象获取数组
我有一个JSON对象:Javascript 从JSON对象获取数组,javascript,json,Javascript,Json,我有一个JSON对象: var Events = { "Jan" : [], "Feb" : [], "Mar" : { "23" : [ {"eventName" : "Start", "eventYear" : 2015, "eventDescription" : "First event description"}, {"eventName" : "Start 2", "eventYear" : 2016, "eventDescription" :
var Events = {
"Jan" : [],
"Feb" : [],
"Mar" : {
"23" : [
{"eventName" : "Start", "eventYear" : 2015, "eventDescription" : "First event description"},
{"eventName" : "Start 2", "eventYear" : 2016, "eventDescription" : "Second event description"},
{"eventName" : "Start 3", "eventYear" : 2017, "eventDescription" : "Third event description"}
],
"24" : [
{"eventName" : "Start", "eventYear" : 2015, "eventDescription" : "First event description for 24"},
{"eventName" : "Start 2", "eventYear" : 2016, "eventDescription" : "Second event description for 24"}
]
},
"Apr" : [],
"May" : [],
"Jun" : [],
"Jul" : [],
"Aug" : [],
"Sep" : [],
"Oct" : [],
"Nov" : [],
"Dec" : []
}
我正在尝试获取当月的事件数组:
window.addEventListener('DOMContentLoaded', init);
var date, month_names_short, thisMonthEvents;
function init(){
date = new Date();
month_names_short = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
thisMonthEvents = Events.month_names_short[date.getMonth()];
};
但我收到以下错误类型错误:无法读取此行的未定义属性“2”:
thisMonthEvents = Events.month_names_short[date.getMonth()];
我做错了什么?如何修复它?如果您确实计划使用月名短数组,您可以执行以下操作:
function init(){
date = new Date();
month_names_short = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
for (var index in month_names_short) {
var month = month_names_short[index];
thisMonthEvents = Events[month];
}
};
首先,您需要通过索引在month_names_short数组中查找月份名称。然后使用和找到的名称可以访问相应的事件:
function init() {
date = new Date();
month_names_short = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
thisMonthEvents = Events[month_names_short[date.getMonth()]];
};
使用[]而不是。捐赠
您的意思是thisMonthEvents=Events[month\u names\u short[date.getMonth]]?您是否尝试过使用getJSONArray和setJSONArray?month\u names\u short不是的属性Events@nnnnnn是的,这就是我需要的,谢谢!你能把它贴出来作为答案吗?这样我就可以接受了?
window.addEventListener('DOMContentLoaded', init);
var date, month_names_short, thisMonthEvents;
function init(){
date = new Date();
month_names_short = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
thisMonthEvents = Events[month_names_short[date.getMonth()]];
};