2011-04-18 74 views
2

for循環有可能重複3次嗎?例如,JavaScript for-loop問題

for (i=0;i<=5;i++) 

創建此:1,2,3,4,5。 我想創建一個這樣做的循環:1,1,1,2,2,2,3,3,3,4,4,4,5,5,5

這可能嗎?

回答

6
for (i=1;i<=5;i++) 
    for(j = 1;j<=3;j++) 
     print i; 
3

是的,只要你包裹在一個又一個循環:

for (i = 1; i <= 5; i++) { 
    for (lc = 0; lc < 3; lc++) { 
     print(i); 
    } 
} 

(原密碼說你想要1-5,但你從0開始我的例子始於1)

+1

這將打印0,1,2,3,4,5,0,1,2,3,4,5,0,1,2,3,4,5 。 – Marlon 2011-04-18 23:01:24

+0

這將打印'0,1,2,3,4,5,0,1,2,3,4,5,0,1,2,3,4,5' – 2011-04-18 23:02:07

+0

呃,抱歉,修正。 – yan 2011-04-18 23:02:44

0

你可以使用第二個變量,如果你真的想一個循環,如:

for(var i = 0, j = 0; i <= 5; i = Math.floor(++j/3)) { 
    // whatever 
} 

雖然,根據你想要的原因,可能有更好的方法。

+1

我認爲你的終止條件應該測試'我<= 5'。 – 2011-04-18 23:05:40

+0

謝謝!我現在改變了它。 – Ryan 2011-04-18 23:07:05

0

只需添加嵌套在第一第二循環:

for (i = 0; i <= 5; i++) 
    for (j = 0; j < 3; j++) 
     // do something with i 
0

可以使用嵌套的for循環

for (var i=0;i<5; i++) { 
    for (var j=0; j<3; j++) { 
    // output i here 
    } 
} 
3

您可以在兩個變量的for循環,並增加我只當j是爲3的倍數:

爲(I = 1,J = 0;我< = 5; I = ++Ĵ%3 = 0 I:I + 1)

1

當然。您可以爲循環嵌套:

for (var i = 1; i < 6; ++i) { 
    for(var j = 0; j < 3; ++j) { 
     print(i); 
    } 
} 

注意,在你的問題的代碼將打印0, 1, 2, 3, 4, 5,不1, 2, 3, 4, 5。我已經修復了這個問題,以便在我的回答中與你的描述相符

0

可以在循環中使用兩個變量:

for (var i=1, j=0; i<6; j++, i+=j==3?1:0, j%=3) alert(i); 

但是,它不是通過看它做什麼的代碼那麼明顯。您可能會更好只是中嵌套另一個循環:

for (var i=1; i<6; i++) for (var j=0; j<3; j++) alert(i); 
0

我看到很多與嵌套循環(顯然是最好的和最易懂的解決方案),然後一些答案有一個環和兩個變量的答案,但令人驚訝的沒有人提出過單個循環和單個變量。所以只適合練習:

for(var i=0; i<5*3; ++i) 
    print(Math.floor(i/3)+1);