如何在javascript中混合变量和循环索引?

时间:2014-08-20 11:05:49

标签: javascript loops for-loop

我有十个名为的javascript变量 street1,street2,street3 ... street10。

我必须通过插入这些变量来进行循环。 所以我做了:

var data;
for (var i=1;i<=10;i++)
{
data = data + 'this is street '+street+i+'\n';
}   

控制台日志打印“街道”不存在...这是正确的,因为我的变量名为street1。 有一种方法可以“混合”变量和索引吗?

4 个答案:

答案 0 :(得分:3)

将此项目存储在数组中会更有意义:

var items = ["a", "b", "c"];
for (var i=0;i<3;i++)
{
   Console.log(items[i]);
}

或者,您可以使用方括号表示法。访问Street1取决于它所在的位置,假设您没有确定任何内容,以下内容将为您提供值,具体取决于street1的定义位置:

this['street' + i]
window['street' + i]

答案 1 :(得分:3)

你真的应该使用一个数组:

var street = [];
street.push("Fake St");
for(var i=0; i<street.length; i++) {
    data += "this is street: " + street[i] + "\n";
}

可以使用bracket notation 来实现您的原创想法。

var data;
for (var i=1;i<=10;i++)
{
data = data + 'this is street '+ this["street"+i] +'\n';
}  

答案 2 :(得分:2)

可以使用eval来执行此操作,但这是一个缓慢,危险且全面的不良做法,因此我不会向您展示。

你可以做的是使用数组。

var streets = ['street1','street2','etc.','street10'];

然后,您可以遍历数组并获取值:

var data;
for (var i=0;i<10;i++)
{
data = data + 'this is street '+streets[i]+'\n';
}   

答案 3 :(得分:1)

普遍接受的方法是使用arrays。您的代码看起来像这样:

var streets = ["Park street", "First street", "Pine street", "Rainbow road", "Yellow brick road", "View street", "Ninth street", "Cedar street", "Lake court", "Hill street"];

for(var i = 0; i < streets.length; i++) {
    data += "this is street " + streets[i] + "\n";
}

关键的改进是,由于for循环的i < streets.length部分,它将自动调整到阵列中的许多街道。

可能eval()做到这一点,但除了效率低下而且比它的价值更麻烦之外,这可能很危险。