JavaScript for-loop вопрос
Возможно ли для цикла 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 ответов
Вы можете иметь две переменные в цикле for и увеличивать i только тогда, когда j кратно 3:
для (i=1, j=0; i <= 5; i = ++j % 3!= 0? i: i + 1)
Да, просто заверните ваш цикл в другой:
for (i = 1; i <= 5; i++) {
for (lc = 0; lc < 3; lc++) {
print(i);
}
}
(Ваш оригинальный код говорит, что вы хотите 1-5, но вы начинаете с 0. Мой пример начинается с 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
, Я исправил это, чтобы соответствовать вашему описанию в моем ответе.
Я вижу много ответов с вложенными циклами (очевидно, самое хорошее и наиболее понятное решение), а затем некоторые ответы с одним циклом и двумя переменными, хотя на удивление никто не предложил один цикл и одну переменную. Так что просто для упражнения:
for(var i=0; i<5*3; ++i)
print( Math.floor(i/3)+1 );
Вы можете использовать две переменные в цикле:
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);
Просто добавьте второй цикл, вложенный в первый:
for (i = 0; i <= 5; i++)
for (j = 0; j < 3; j++)
// do something with i
Вы можете использовать вложенные для циклов
for (var i=0;i<5; i++) {
for (var j=0; j<3; j++) {
// output i here
}
}
Вы можете использовать вторую переменную, если вы действительно хотите только один цикл, например:
for(var i = 0, j = 0; i <= 5; i = Math.floor(++j / 3)) {
// whatever
}
Хотя, в зависимости от причины, по которой вы этого хотите, возможно, есть лучший способ.