Несколько способов перебора массива в JavaScript: цикл for, цикл while, цикл for-of, map(), forEach(), filter() и reduce().

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

Что такое массив?

Массив представляет собой сложную структуру данных, которая используется для последовательного хранения элементов одного и того же типа данных. Массивы являются статическими, и размер массива следует указывать при инициализации массива в коде. Но массив JavaScript отличается от традиционных массивов, где массивы являются динамическими — это означает, что нет необходимости указывать размер массива при инициализации, и любое количество элементов может быть помещено в массивы. Массивы JavaScript могут хранить значения любого типа данных — это означает, что элементы внутри массива могут быть любого размера, т. е. нет ограничений, что элементы должны быть одного типа.

Почему мы перебираем массив?

Поскольку массив хранит элементы в последовательном порядке, нам нужно пройти или выполнить итерацию по массиву, чтобы найти в нем нужный элемент. Обычно обход занимает время сложности O(n). Мы также пройдемся по массиву, чтобы изменить элементы массива или получить доступ к каждому элементу массива.

Различные методы обхода массива

Существует несколько методов обхода массива. Они есть:

  1. для цикла
  2. пока цикл
  3. цикл for-of
  4. карта()
  5. для каждого()
  6. фильтр()
  7. уменьшать()

1. для петли

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

  1. Исходное базовое состояние
  2. Завершающее состояние
  3. Условие повторения (обычно увеличение или уменьшение)

Пример:

2. пока цикл

Цикл while работает аналогично циклу for, но он принимает условие и будет выполняться до тех пор, пока данное условие не станет истинным. Если условие становится ложным, цикл while прерывается, и управление переходит к следующему оператору вне цикла. Операторы continue и break можно использовать внутри цикла while.

Пример:

3. цикл for-of

Цикл for-of похож на цикл for-in в Python, где мы используем «in» в качестве ключевого слова, тогда как в JS «in» заменено на «of». Он используется для перебора массива и может напрямую обращаться к элементам без индексации, поскольку он дает элементы, а не индексирует, как фактический «цикл for».

Пример:

Это можно использовать, когда нам нужно просто получить доступ к элементам и не нужно манипулировать ими, поскольку мы не можем получить доступ к индексу элементов.

4. карта ()

map() — это метод массива, который используется для последовательного применения функции или желаемого действия к каждому элементу массива, и результирующий массив будет возвращен в качестве результата. Он вызывает функцию обратного вызова, а функция обратного вызова имеет три параметра: значение, индекс и массив. Элемент, возвращаемый функцией обратного вызова, будет сохранен в массиве с тем же индексом. Похоже на то, что вы берете элементы из одного массива, манипулируете ими и сохраняете их в новом массиве.

Пример: для работы с массивом

5. для каждого()

forEach() также является методом массива и очень похож на функцию map(), тогда как единственное отличие состоит в том, что метод forEach() ничего не возвращает. Это вернет undefined. Функции, которые могут быть реализованы с помощью метода map(), также могут быть реализованы с помощью forEach(), но для изменения элемента в новом массиве вручную требуются дополнительные усилия.

Пример:

6. фильтр()

Метод filter() аналогичен методу map(), но возвращаемый тип обратного вызова — логическое значение. Метод filter() возвращает массив. Он используется для фильтрации массива только с элементами, которые удовлетворяют заданному условию обратного вызова. Элементы, не удовлетворяющие заданному условию, не добавляются в возвращаемый массив. Если ни один из элементов не удовлетворяет условию, определенному в обратном вызове, возвращаемое значение будет пустым массивом, а не нулевым.

Пример: фильтрация нечетных чисел в массиве

7. уменьшить ()

Простой способ объяснить функцию reduce() — объяснить ее на простом примере. Рассмотрим алгоритм добавления элементов в массив. Обычно мы определяем переменную с именем как сумму до 0, добавляем все элементы в переменную суммы и возвращаем ее.

Мы можем добиться вышеизложенного, просто используя функцию reduce(), как показано ниже:

Функцию reduce() можно использовать разными способами для достижения разных целей, и я не смог бы объяснить все в одной статье.

Посмотрите мое новое портфолио:



Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord.