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

how to mix variables and loop indexes in javascript?

本文关键字:变量 循环 索引 混合 javascript      更新时间:2023-09-26

我得到了十个javascript变量命名1号街,2号街,3号街……street10 .

我必须通过输入这些变量来做一个循环。所以我照做了:

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

console log打印"street"不存在…这是正确的,因为我的变量名为street1。有一种方法,我可以"混合"变量和索引?

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

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

但是你可以实现你原来的想法使用括号符号:

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

将该项存储在数组中更有意义:

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

也可以使用方括号表示法。访问Street1将取决于它的位置,假设您没有限定任何范围,下面将根据street1的定义位置获得值:

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

可以使用eval来做到这一点,但这是缓慢的,危险的,只是一个糟糕的做法,所以我不打算给你看。

你可以用数组来代替。

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

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

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

一般接受的方法是使用数组。你的代码看起来像这样:

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()来做,但除了效率低下和比它的价值更多的麻烦之外,这可能是危险的。