我有一组Objects
:recs6
,recs7
,recs8
...... recs23
。我想使用内部for
循环在数组中添加一个因子。但'recs + n'被解释为字符串而不是变量名。如何使其代表现有变量 - rec6
,rec7
等?
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);
}
答案 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);
}