字符串作为javascript中的变量名称

时间:2013-07-31 09:29:28

标签: javascript

我有一组Objectsrecs6recs7recs8 ...... recs23。我想使用内部for循环在数组中添加一个因子。但'recs + n'被解释为字符串而不是变量名。如何使其代表现有变量 - rec6rec7等?

for(var n=6; n<24; n++){

    for(var m=0; m<'recs+n'.length; m++){
        hourBusyness += parseFloat(('recs'+n)[m].gtse);
    }

    hourAvgbusyness = hourBusyness / ('recs'+n).length;
    console.log(hourAvgbusyness);
}

6 个答案:

答案 0 :(得分:3)

使用this['recs'+n]代替('recs'+n)

答案 1 :(得分:0)

“......作为一个对象数组......”如果没有显示我们那个数组,我们必须猜测你的意思。

但是如果你把它们放在 对象上作为属性:

var foo = {
    recs6: {/*...*/}, // Or are these arrays? See note below
    recs7: {/*...*/},
    recs8: {/*...*/},
    recs9: {/*...*/},
    // ...
};

然后你可以用括号表示法来访问它们:

for(var m=0; m < foo['recs'+n].length; m++){

或者,正如注释中的dystroy指出的那样,只需使用数组:

var recs = [
    {/*...*/}, // Or are these arrays? See note below
    {/*...*/},
    {/*...*/},
    {/*...*/},
    // ...
];

for(var m=0; m < recs[n].length; m++){

请注意,你在它们上使用length属性,这表明它们是数组,而不仅仅是普通对象,但上面的基本要点是如何得到这个东西(foo['recs'+n]

答案 2 :(得分:0)

我不确定你能做到这一点。但是,您可以将您的recs *放在字典中,这样您就可以编写:recsDict['recs'+n]来访问您的第n个recs数组。

答案 3 :(得分:0)

您可以使用JSON对象作弊。

var t = {};
t.recs6 = values;
//later...
t[('recs'+n)]
//can retrieve your data.

答案 4 :(得分:0)

正如昆汀所说,这看起来像是一种代码味道。你能尝试重构,以便recs是一个数组数组吗?

但是,以下工作:

window['recs' + n].length

答案 5 :(得分:0)

您可以创建一个其中key为recsN的数组,并将其访问为:

var array = [["recs1",5],["recs2",10],...,["recs23", 42]];

for (var i = 0; i < array.length;i++) {
    for(var m=0; m<array[i].length; m++){
        hourBusyness += parseFloat(array[i][m].gtse);
    }