从变量名动态创建变量



我有一个动态数量的文件(结构,tab1, tab2, tab3,…),我加载到我的网站。对于它们中的每一个,我都想定义像"total","different",....

这样的变量
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;
};

你不能这么做:

dbVariables[filename].total = 123;

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

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

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

需要设置dbVariables[filename]后再加总数。试试这样写:

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

最新更新