我有十个名为的javascript变量 street1,street2,street3 ... street10。
我必须通过插入这些变量来进行循环。 所以我做了:
var data;
for (var i=1;i<=10;i++)
{
data = data + 'this is street '+street+i+'\n';
}
控制台日志打印“街道”不存在...这是正确的,因为我的变量名为street1。 有一种方法可以“混合”变量和索引吗?
答案 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()
做到这一点,但除了效率低下而且比它的价值更麻烦之外,这可能很危险。