Может ли цикл for увеличиваться/уменьшаться более чем на один?

есть ли другие способы увеличить a for цикл в Javascript, кроме i++ и ++i? Например, я хочу увеличить на 3 вместо одного.

for (var i = 0; i < myVar.length; i+3) {
   //every three
}

7 ответов


использовать += оператор присваивания:

for (var i = 0; i < myVar.length; i += 3) {

технически вы можете поместить любое выражение, которое хотите, в окончательное выражение цикла for, но оно обычно используется для обновления переменной счетчика.

для получения дополнительной информации о каждом шаге цикла for,проверьте статью MDN.


A for петли:

for(INIT; TEST; ADVANCE) {
    BODY
}

означает следующее:

INIT;
while (true) {
    if (!TEST)
        break;
    BODY;
    ADVANCE;
}

вы можете написать почти любое выражение для INIT, TEST, ADVANCE и BODY.

отметим, что ++ операторы и варианты являются операторами с побочными эффектами (следует стараться избегать их, если вы не используете их, как i+=1 и т. п.):

  • ++i означает i+=1; return i
  • i++ означает oldI=i; i+=1; return oldI

пример:

> i=0
> [i++, i, ++i, i, i--, i, --i, i]
[0, 1, 2, 2, 2, 1, 0, 0]

for (var i = 0; i < 10; i = i + 2) {
    // code here
}​

ответ Эндрю Уитакера верен, но вы можете использовать любое выражение для любой части.
Просто помните, что второе (среднее) выражение должно оцениваться, чтобы его можно было сравнить с булевым true или false.

когда я использую for цикл, Я думаю об этом как

for (var i = 0; i < 10; ++i) {
    /* expression */
}

как

var i = 0;
while( i < 10 ) {
    /* expression */
    ++i;
}

вы, конечно, можете. Другие правильно указали, что вам нужно сделать i += 3. Вы не можете сделать то, что вы опубликовали, потому что все, что вы делаете здесь, это добавление i + 3 но никогда не назначать результат обратно i. i++ - это просто сокращение для i = i + 1 аналогично i +=3 это сокращение от i = i + 3.


for (var i = 0; i < myVar.length; i+=3) {
   //every three
}

дополнительные

Operator   Example    Same As
  ++       X ++        x = x + 1
  --       X --        x = x - 1
  +=       x += y      x = x + y
  -=       x -= y      x = x - y
  *=       x *= y      x = x * y
  /=       x /= y      x = x / y
  %=       x %= y      x = x % y

последняя часть тернарного оператора позволяет указать размер шага приращения. Например, i++ означает увеличение на 1. i+=2 такое же, как i=i+2,... так далее. пример:

let val= [];

for (let i = 0; i < 9; i+=2) {
  val = val + i+",";
}


console.log(val);

ожидаемые результаты: "2,4,6,8"

" Я " может быть любой плавающей точкой или целое число в зависимости от желаемого размера шага.