从变量名称动态创建变量

时间:2014-07-01 16:50:32

标签: javascript

我有一个动态数量的文件(结构,tab1,tab2,tab3,...),我加载到我的网站。 对于他们每个人,我想定义变量,如"总计","不同",....

dbVariables.structure.total = aaa
dbVariables.tab1.total = 123
dbVariables.tab2.total = 456
dbVariables. ... .total = xx

dbVariables.structure.different= aaa
dbVariables.tab1.different = abc;
dbVariables.tab2.different = def;
dbVariables. ... .different = xxx

由于将它们放到[window]并不好,我创建了dbVariables对象来存储变量。我目前有一个加载文件的for循环,我甚至可以动态地创建dbVariable.tab1,dbVariable.tab2等,但是我如何将最后的信息和它拼接到它?

var dbVariables= {};
for (i=0; i< fileNamesArray.length; i++){
    filename = fileNamesArray[i];
    processData(filename);
}
});
// the ".total" is not accepted :-(
function processData(filename){
    dbVariables[filename].total = 123;
};

2 个答案:

答案 0 :(得分:1)

你不能这样做:

dbVariables[filename].total = 123;

因为没有dbVariables[filename],所以你可以在undefined上设置一个属性。您需要先添加它。

function processData(filename){
    dbVariables[filename] = {};
    dbVariables[filename].total = 123;
};

但如果dbVariables是一个数组而不是一个对象,你可能会更好,除非你确定没有重复filename

答案 1 :(得分:0)

在添加总计之前,您需要设置dbVariables[filename]。尝试这样的事情:

function processDatra(filename){
    if(typeof dbVariables[filename] === 'undefined') dbVariables[filename] = {};
    dbVariables[filename].total = 123;
};