#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 будет продолжаться до тех пор, пока не будут удалены последние элементы.
Кроме того, поскольку элементы удаляются из исходного массива, они помещаются (добавляются) в новый массив