JavaScript for-loop вопрос - PullRequest
       16

JavaScript for-loop вопрос

2 голосов
/ 19 апреля 2011

Возможно ли для цикла for повторить число 3 раза?Например,

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

Возможно ли это?

Ответы [ 9 ]

6 голосов
/ 19 апреля 2011
 for (i=1;i<=5;i++)
     for(j = 1;j<=3;j++)
         print i;
3 голосов
/ 19 апреля 2011

Вы можете иметь две переменные в цикле for и увеличивать i только тогда, когда j кратно 3:

для (i = 1, j = 0; i <= 5; i = ++ j% 3! = 0? I: i + 1) </p>

3 голосов
/ 19 апреля 2011

Да, просто закрутите свой цикл в другой:

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

(Ваш исходный код говорит, что вы хотите 1-5, но вы начинаете с 0. Мой пример начинается с 1)

1 голос
/ 19 апреля 2011

Определенно.Вы можете вкладывать циклы:

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 голосов
/ 19 апреля 2011

Я вижу много ответов с вложенными циклами (очевидно, самое хорошее и понятное решение), а затем некоторые ответы с одним циклом и двумя переменными, хотя на удивление никто не предложил один цикл и одну переменную. Так что просто для упражнения:

for(var i=0; i<5*3; ++i)
   print( Math.floor(i/3)+1 );
0 голосов
/ 19 апреля 2011

Вы можете использовать две переменные в цикле:

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 голосов
/ 19 апреля 2011

Вы можете использовать вложенные для циклов

for (var i=0;i<5; i++) {
  for (var j=0; j<3; j++) {
   // output i here
  }
}
0 голосов
/ 19 апреля 2011

Просто добавьте второй цикл, вложенный в первый:

for (i = 0; i <= 5; i++)
    for (j = 0; j < 3; j++)
        // do something with i
0 голосов
/ 19 апреля 2011

Вы можете использовать вторую переменную, если вы действительно хотите только один цикл, например:

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

Хотя, в зависимости от причины, по которой вы этого хотите, возможно, есть лучший способ.

...