字符串作为javascript中的变量名
我有一个字符串作为javascript中的变量名,javascript,Javascript,我有一个对象数组:recs6,recs7,recs8记录23。我想使用内部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); } hourAvgbu
对象数组
:recs6
,recs7
,recs8
<代码>记录23。我想使用内部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);
}
for(var n=6;n“…作为一个对象数组…”在不向我们展示该数组的情况下,我们必须猜测您的意思
但如果您将它们作为属性放在对象上:
var foo = {
recs6: {/*...*/}, // Or are these arrays? See note below
recs7: {/*...*/},
recs8: {/*...*/},
recs9: {/*...*/},
// ...
};
然后,您可以使用括号表示法访问它们:
for(var m=0; m < foo['recs'+n].length; m++){
for(var m=0;m
或者,正如dystroy在评论中指出的,只需使用数组:
var recs = [
{/*...*/}, // Or are these arrays? See note below
{/*...*/},
{/*...*/},
{/*...*/},
// ...
];
for(var m=0; m < recs[n].length; m++){
var recs=[
{/*…*/},//或者这些是数组?请参见下面的注释
{/*...*/},
{/*...*/},
{/*...*/},
// ...
];
对于(var m=0;m
请注意,您正在对它们使用length
属性,这表明它们是数组,不仅仅是普通对象,但上面的基本内容是如何获取对象(foo['recs'+n]
)。“…作为对象数组…”在不向我们展示该数组的情况下,我们必须猜测您的意思
但如果您将它们作为属性放在对象上:
var foo = {
recs6: {/*...*/}, // Or are these arrays? See note below
recs7: {/*...*/},
recs8: {/*...*/},
recs9: {/*...*/},
// ...
};
然后,您可以使用括号表示法访问它们:
for(var m=0; m < foo['recs'+n].length; m++){
for(var m=0;m
或者,正如dystroy在评论中指出的,只需使用数组:
var recs = [
{/*...*/}, // Or are these arrays? See note below
{/*...*/},
{/*...*/},
{/*...*/},
// ...
];
for(var m=0; m < recs[n].length; m++){
var recs=[
{/*…*/},//或者这些是数组?请参见下面的注释
{/*...*/},
{/*...*/},
{/*...*/},
// ...
];
对于(var m=0;m
请注意,您正在对它们使用length
属性,这表明它们是数组,不仅仅是普通对象,上面的基本内容是如何获取对象(foo['recs'+n]
)。使用这个['recs'+n]
而不是('recs'+n)使用这个['recs'+n]
('recs'+n)
我不确定你能不能这样做。但是,你可以把你的rec*放到字典里,这样你就可以写:recsDict['recs'+n]
来访问你的第n个recs数组。我不确定你能不能这样做。但是,你可以把你的rec*放到字典里,这样你就可以写:recsDict['recs'+n]
访问您的第n个recs数组。您可以通过使用JSON对象进行某种欺骗
var t = {};
t.recs6 = values;
//later...
t[('recs'+n)]
//can retrieve your data.
您可以通过使用JSON对象进行某种欺骗
var t = {};
t.recs6 = values;
//later...
t[('recs'+n)]
//can retrieve your data.
正如昆汀所说,这对我来说就像是一种代码味道。你能试着重构REC使其成为一个数组吗
然而,以下工作:
window['recs' + n].length
正如昆汀所说,这对我来说就像是一种代码味道。你能试着重构REC使其成为一个数组吗
然而,以下工作:
window['recs' + n].length
您可以创建一个数组,其中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);
}
var数组=[“recs1”,5],“recs2”,10],…,[“recs23”,42];
for(var i=0;i 对于(var m=0;m,您可以创建一个数组,其中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);
}
var数组=[“recs1”,5],“recs2”,10],…,[“recs23”,42];
for(var i=0;i
对于(var m=0;mDon't!重构以使用一个实数组,而不是一堆具有类似名称的自变量。我们在编程语言中使用数组正是出于这个原因!@Quentin-我使用switch case分解了一个大json数组来生成这些小时记录。因此,recs6包含所有日期为小时6的记录。然后我将uld汇总gtse并找出第6小时的平均值。将其分解为一个数组,而不是一堆变量(具有类似名称)包含数组。不要!重构以使用真实数组,而不是一堆具有类似名称的自变量。我们在编程语言中使用数组正是出于这个原因!@Quentin-我通过使用switch case生成这些小时记录来分解一个大json数组。因此recs6包含所有日期为小时6.t的记录然后,我将汇总gtse并找到第6个小时的平均值,然后将其分解为一个数组,而不是一堆变量(具有相似的名称)包含数组。嗯……这里的数组会更干净。@dystroy:我不知道我们是否有足够的信息来了解这一点。但是,很可能。嗯……这里的数组会更干净。@dystroy:我不知道我们是否有足够的信息来了解这一点。但是,很可能。这里没有JSON。为什么有括号?请不要将JavaScript对象与JSON混淆。这里没有JSON。为什么要用括号?请不要将JavaScript对象与JSON混淆。你假设它们是全局对象……代码不需要在严格模式下工作。是的,这是一个有缺陷的解决方案。但这就是问题的答案。在这种情况下,最好的解决方案可能不是o使用数组,如果他控制变量的创建。但这不是一个关于代码约定的问题,而是关于使用字符串作为变量的问题。你假设它们是全局变量……并且代码不需要在严格模式下工作。是的,这是一个有缺陷的解决方案。但这是问题的答案。在这种情况下,最好的解决方案如果他控制变量的创建,他可能会使用数组。但这不是关于代码约定的问题,而是关于使用字符串作为变量的问题。只有当变量是全局变量时,这才有效。只有当变量是全局变量时,这才有效