我有一些變量home1,home2和home3包含值。 現在我想要一個帶有計數器變量的循環來顯示主變量的值。 但我怎樣才能連接變量,以便我可以循環它們?如何連接變量?
var counter = 1;
while (counter < 4){
alert(home + counter);
counter = counter + 1;
}
我有一些變量home1,home2和home3包含值。 現在我想要一個帶有計數器變量的循環來顯示主變量的值。 但我怎樣才能連接變量,以便我可以循環它們?如何連接變量?
var counter = 1;
while (counter < 4){
alert(home + counter);
counter = counter + 1;
}
最簡單的做法是將它們分配到一個數組中,並循環數組。
var homes = new Array(home1, home2, home3);
var counter = 0;
while (counter < homes.length){
alert(homes[counter]);
counter = counter + 1;
}
沒有檢查我的語法,但這是基本思想。
你只能使用eval()
(除非所有三個變量都是全局變量)來做到這一點,但是你不應該這麼做,因爲它不是正確的方法。相反,你應該使用數組爲你的變量:
var home = [ "value1", "value2", "value3" ],
counter = 0;
while (counter < 3) { // or counter < homes.length
alert(home[counter]);
counter++;
}
var counter = 1;
while (counter < 4){
alert(window["home" + counter]);
counter = counter + 1;
}
我會重構這個使用數組:
var homes = [ 'London', 'New York', 'Sydney'];
for(var i = 0; i < homes.length; i++)
{
alert(homes[i]);
}
Concatanating變量引用其他變量,你正在試圖做的是不是一個好的設計,也不應該這樣做。
請注意,使用for
循環可能會更容易,因爲我已經完成了,它可以更容易閱讀。 homes.length
將返回數組中元素的數量,所以我們將在這個實例中遍歷所有元素!
希望對你有所幫助。
小心你的術語 - 你可能會混淆某人!在你的例子中,變量'i'在'for'循環之前定義並且可用。而且,如果數組長度不變,那麼使用數字可以提供比訪問屬性更好的性能。 – 2011-05-18 11:04:51
@安迪謝謝,我知道這是一個雜亂的短語,因爲我寫了它,我會清理它。 – 2011-05-18 11:08:19
@安迪,我不同意使用數字雖然,是不是指定<4一個幻數?這可能會導致OP更多的問題,如果我們想循環數組中的所有元素,我會堅持使用長度。 – 2011-05-18 11:09:37
我同意最好使用一個數組,但我有一個歷史來處理這些值在單獨變量中的位置。所以我最喜歡這種方法。謝謝! – John 2011-05-18 11:09:35