Javascript:从数组中设置var

时间:2012-08-05 20:41:30

标签: javascript arrays variables

我有几个月这样的数组:

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

2 个答案:

答案 0 :(得分:4)

为什么您需要拥有变量名称janfeb等?据我所知,你可以通过使用具有属性的普通旧对象来做你想做的一切:

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];