Вам нужно пройти через набор чисел, список имен или что-то еще? Чтобы получить каждый элемент массива (или каждую пару ключ-значение из объекта), вы можете использовать цикл for.

Изучая, как перебирать массив, вы снова и снова будете сталкиваться с этим базовым шаблоном:

Итак, что же это за таинственный i? Ну, это просто переменная. Вы можете поместить туда любое слово или букву, если это сделает его более понятным, от x до чизкейк. Вот почему вам нужно, чтобы let в вашем цикле for (также это не должно быть let, это может быть var или const).

Вы объявляете эту переменную, в данном случае i, эквивалентной 0. Вы также говорите, что iвсегда меньше длины массива (по которому вы выполняете итерацию) и, наконец, что вы хотите увеличивайтеiна 1 каждый раз.

Цикл For в действии

Давайте посмотрим на пример! (прочитайте все о том, как это работает, в закомментированных частях. У вас есть проблема: пожалуйста, создайте функцию, которая принимает массив, а затем возвращает новый массив, содержащий все нечетные числа.

let oddNum = function(array){
//create a new array to push the odd numbers into 
  let oddnumbers = []
//iterate through the original array using  a for-loop
  for(let i = 0; i < array.length; i++){
//array[i] here means the original array at index i. So we are checking if the array at index i is NOT divisible by 0 without a remainder. If it is not, then we know for sure it is an odd number
  if (array[i] % 2 !== 0){
//once we confirmed that it is an odd number, we can push it into the new array
    oddnumbers.push(array[i])
  }
  }
//we can return our new array
  return oddnumbers;
}
//here, we have the array that acts as the arguement we are passing into our function. It can be any array with numbers.
let numbersarray = [1,2,3,4,5,6,7,8,9,10]
//we call our function, and print it out
console.log(oddNum(numbersarray))
//our result for this particular problem shoud be [1,3,3,7,9] printed to the console.

Как перебрать массив в обратном порядке?

Итак, что, если бы у нас была проблема, описанная выше, но она читалась бы так: Пожалуйста, создайте функцию, которая принимает массив, а затем возвращает новый массив, содержащий все нечетные числа в обратном порядке.

let oddNum = function(array){
  let oddnumbers = []
//time to loop through the array again. 
//This time, we are looping through backwords
//with the starting point being array.length-1.
  for(let i = array.length-1 ; i > 0; i--){
  if (array[i] % 2 !== 0){

    oddnumbers.push(array[i])
  }
  }
  return oddnumbers;
}
.
let numbersarray = [1,2,3,4,5,6,7,8,9,10]
console.log(oddNum(numbersarray))
//our result for this particular problem shoud be [9,7,5,3] printed to the console.

В этом примере важно отметить тот факт, что мы используем array.length-1. Почему это? Ну, когда мы используем свойство .length, мы фактически получаем количество всех элементов в массиве. Это, однако, не учитывает, что мы начинаем все индексирование с 0. Поэтому, чтобы мы могли пройтись по индексам в обратном порядке, не столкнувшись с неопределенным в конце, когда мы нажмем 0, нам нужно приспособиться к этому, используя -1.

Как работают вложенные циклы?

Вложенные циклы могут помочь вам углубиться в свои массивы или работать с двумерными массивами.

Здесь мы перебираем двумерный массив с одним циклом for:

let candy = [["chocolates", "caramels"], ["hard candy", "sugar free"], ["gum", "mints", "breath strips"]]

let candyFunc = function(array){
  for (let i = 0; i < array.length; i++){
    console.log(array[i])  
}
}
candyFunc(candy)

это приведет к этой печати на терминал:

Это элементы внешнего массива.

Затем мы можем пройтись по тому же массиву двумя циклами:

let candy = [["chocolates", "caramels"], ["hard candy", "sugar free"], ["gum", "mints", "breath strips"]]

let candyFunc = function(array){
  for (let i = 0; i < array.length; i++){
       let innerelements = array[i] 
    for (let j = 0; j < innerelements.length; j++)
    console.log(innerelements[j])
}
}
candyFunc(candy)

Выше вы можете увидеть, что выводят два цикла for. Это элементы внутренних массивов внутри массива «конфеты». Используя вложенные циклы, вы можете получить доступ к строкам или массивам внутри внешнего массива.

Небольшой взгляд в будущее циклов For-Loop:

Когда вы действительно познакомитесь с этим циклом for, вы получите возможность использовать циклы for, где все происходит «под капотом»:

for(let element in array){
console.log(i)
}

Это даст вам тот же эффект, что и использование ручного цикла for. Небольшой совет: поэкспериментируйте: что произойдет, если вы используете of вместо in?

Если вы хотите узнать больше об основах, ознакомьтесь с основами Функций JavaScript.

Если вы хотите узнать о Fat Arrow Functions, нажмите здесь.