variables在JavaScript中被视为一个string

我正在尝试节点js上的node-mysql模块。 我想要做的是能够拿出这样一个对象:

{'room1':'Room 1','room2':'Room 2','room3':'Room 3'} 

代码如下:

 var boom = results; var rooms = []; var index = 0; var name = 'session'; for(var b in boom){ var ses = name + index; rooms[b] = {ses : boom[b]['ses_title']}; index++; } 

在上面的代码中,sesvariables被视为string。 最后我得到了这样的结果:

 [{ses : 'class session'} , {ses : 'team session'}] 

你不能像这样分配键名。 使用括号符号 ,它应该工作:

 var boom = results; var rooms = []; var index = 0; var name = 'session'; for(var b in boom){ rooms[b] = {}; rooms[b][name + index] = boom[b]['ses_title']}; index += 1; } 

你需要使用像这样的东西:

 rooms[b] = {}; rooms[b][ses] = boom[b]['ses_title']; 

这是因为对象文字中的键总是按字面解释,而不是评估。