Как цикл while работает без условия?

#javascript

#javascript #алгоритм #циклы #сращивание

Вопрос:

Я понимаю, что он удаляет первые 3 элемента array и добавляет их в новый массив. Но как функция продолжает добавлять последующие фрагменты массива в новую переменную массива?

Как работает while цикл без надлежащих условий?

Как это работает в сотрудничестве с splice() here?

 function chunkArrayInGroups(arr, size){
  let newArr = [];
  while(arr.length){
    newArr.push(arr.splice(0, size))
  }
  return newArr;
}

chunkArrayInGroups(["a", "b", "c", "d"], 2);
  

Комментарии:

1. В конечном arr.length итоге будет равно нулю, что будет равно false .

2. Как он уменьшается без уменьшающейся переменной?

3. splice Команда удаляет 2 элемента из массива. Так length что с каждым разом становится все меньше, пока не станет 0.

Ответ №1:

Условие таково while(arr.length) . Цикл while будет выполняться, пока это условие выполняется. В JavaScript каждое условие является истинным, если оно не является одним из следующих:

ложь

0 (ноль)

» или «» (пустая строка)

null

не определено

NaN (например, результат 1/0)

В вашем случае while цикл будет выполняться, пока в массиве есть элементы ( arr.length больше нуля), потому что, если значение arr.length равно нулю, цикл while прекратит выполнение.

arr.splice с другой стороны arr , при каждом его выполнении удаляется один элемент (изменяется arr длина). Поэтому, когда в нем не осталось элементов arr (потому arr.splice что они все удалены) while , цикл остановится.

Ответ №2:

Условия в js являются либо «правдивыми», либо «ложными», для чисел все, кроме 0, является «правдивым», 0 — «ложным». Это означает, что цикл выполняется до тех пор, пока массив не станет пустым, его длина 0 и, следовательно, ложным.

  if(0) alert("never");
 if(1) alert("always");
 let i = 3;
 while(i) console.log(i--);
  

Ответ №3:

Цикл while будет продолжаться до тех пор, пока исходный массив не станет пустым. Splice удалит выбранные элементы из исходного массива, а while будет продолжаться до тех пор, пока не будут удалены последние элементы.

Кроме того, поскольку элементы удаляются из исходного массива, они помещаются (добавляются) в новый массив