我有几个月这样的数组:
var months = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
我想要做的是将月份的名称变为变量,并将对象设置为它,如下所示:
for(i=0;i<11;i++){
months[i] = $(".bitem:eq("+i+")");
}
但是,这只是替换months[i]
(if i=0
,例如它将用对象替换“jan”。我想要做的是使用months[i]
等于变量名称的字符串。我尝试使用.toString()
这样:
for(i=0;i<11;i++){
months[i].toString() = $(".bitem:eq("+i+")");
}
但是我收到了错误:
Error: ReferenceError: invalid assignment left-hand side
答案 0 :(得分:4)
为什么您需要拥有变量名称jan
,feb
等?据我所知,你可以通过使用具有属性的普通旧对象来做你想做的一切:
var monthNames = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
var months = {};
for(var i = 0; i < monthNames.length; i++) {
months[monthNames[i]] = $(".bitem:eq("+i+")");
}
// Example usage
var januaryItem = months["jan"];
// or equivalent: months.jan;
答案 1 :(得分:1)
创建一个可以将字符串转换为数组中索引的对象,而不是创建变量:
var monthIndex = {
"jan": 0, "feb": 1, "mar": 2, "apr": 3, "may": 4, "jun": 5,
"jul": 6, "aug": 7, "sep": 8, "oct": 9, "nov": 10, "dec": 11
};
var months = $(".bitem");
现在给出任何月份名称,您可以从数组中获取相应的元素:
var m = 'aug';
var element = months[monthIndex[m]];
您还可以使用特定月份名称来获取索引:
var element = months[monthIndex.aug];