【发布时间】:2013-02-24 01:05:45
【问题描述】:
我在 javascript for() 循环内运行,需要动态生成以下内容:
devCssFiles[ '../'+thisTheme._name+'/assets/css/main.css' ] =
'child_themes/'+thisTheme._name+'/master.less';
预期结果是一个关联数组,可以在父对象内部迭代声明,例如(thisTheme._name 声明在一个外部 JSON 文件中,在处理下面的代码时会读取该文件,这部分工作正常)
var myConfigObj = {};
for ( var key in thisThemeMetaObj ) {
var devCssFiles = [],
devCssFiles[ '../'+thisTheme._name+'/assets/css/main.css' ] =
'child_themes/'+thisTheme._name+'/master.less';
myConfigObj[thisTheme._name] = devCssFiles;
}
我试图给出一个完整的解释,但问题很简单,我只是在devCssFiles[ '../'+thisTheme._name+'/assets/css/main.css' ] = 'child_themes/'+thisTheme._name+'/master.less'; 的行错误地声明了关联数组的命名键
有人可以在这里告诉我正确的语法吗?
预期的输出应该是这样的 JSON 对象:
myConfigObject: {
'../themeFoo/assets/css/main.css': [
'child_themes/themeFoo/master.less'
]
}
【问题讨论】:
-
请注意,为了简洁起见,我在解释中省略了一些变量的声明,因为我了解系统(它非常复杂),我只需要知道如何动态在
for()循环中命名数组键,其余部分都可以正常工作。 -
为什么不在
for循环中使用key变量?如果您打算使用“命名键”(即非数字索引),您应该说devCssFiles = {}以使用对象而不是数组。但无论哪种方式,您的代码都应该创建一个名称等于表达式'../'+thisTheme._name+'/assets/css/main.css'的结果的属性。
标签: javascript debugging syntax web