Привет. На сегодняшней теме съедено не мало собак :) Но так или иначе, сегодня про циклы в Javascript. Какие бывают виды, и как их использовать.
Циклы в Javascript: часть 1, for(x;y;z) итерации
Этот тип цикла используется, когда нужно что-то перечислить. При этом вместо x подставляется начальное значение (например i=0;), вместо y ограничение для останова (например i<5;), а вместо z — итератор, который изменяет значение i (например i++).
Все x, y и z могут принимать разные значения и делать разные вещи. Например, начальное значение может быть числом или результатом выполнения какой-либо функции, ограничение может быть любым < > = >= <=, а итератор может модифицировать текущий индекс как ему угодно, даже по сложной формуле.
Пример:
for(i=10; i>1; i=Math.ceil(i/2)){ console.log(i); }
В этом примере мы получим такой результат:
10, 5, 3, 2 поскольку огарничиваем i быть больше 1, а модифицируем i как окргуление в верх от деления на 2.
Циклы в Javascript: for (a in b) перебор
Этот тип циклов применяется тогда, когда нужно обойти весь массив или объект по каждому из его элементов. В таком случае в a будет подставлен текущий индекс массива при переборе, а в b – нужно будет передать сам массив или объект. Массив может быть как ассоциативным, так и не быть. При этом при ассоциативном массиве в a будет подставлено имя текущего элемента массива, а при не ассоциативном – просто порядковый номер текущего элемента.
Пример:
for(a in b=[1,2,3,4,5]){ console.log(b[a]); }
или
let b=[1,2,3,4,5]; for(a in b){ console.log(b[a]); }
Результатом будет набор 1,2,3,4,5, который выведется в результате перебора.
Циклы в Javascript: while до тех пор пока
Этот тип циклов можно использовать для цикличных действий «пока не сработает».
Например:
let i_am_hungry=true; while(i_am_hungry){ eat(); if(food<=0){ i_am_hungry=false; } } function eat(){ food--; }
В этом примере, мы выполняем функцию есть до тех пор, пока мы голодны, или пока не закончится еда.
Также есть алтернатива этого цикла do{…}while(условие).
Циклы в Javascript: every перебор
Этот тип циклов предназначен для перебора элементов массивов или объектов.
Используется вот так:
[1,2,3,4,5].every(function(current, index, array){ console.log(current, index, array); });
В результате получим:
1 0 [1,2,3,4,5]
2 1 [1,2,3,4,5]
3 2 [1,2,3,4,5]
4 3 [1,2,3,4,5]
5 4 [1,2,3,4,5]