Несколько способов перебора массива в JavaScript: цикл for, цикл while, цикл for-of, map(), forEach(), filter() и reduce().
В этой статье мы увидим различные способы перебора массива, а также расскажем, чем он отличается от других. Надеюсь, у вас, ребята, есть четкое представление о массивах. Но прежде чем перейти к основному разделу, позвольте мне напомнить основы массива.
Что такое массив?
Массив представляет собой сложную структуру данных, которая используется для последовательного хранения элементов одного и того же типа данных. Массивы являются статическими, и размер массива следует указывать при инициализации массива в коде. Но массив JavaScript отличается от традиционных массивов, где массивы являются динамическими — это означает, что нет необходимости указывать размер массива при инициализации, и любое количество элементов может быть помещено в массивы. Массивы JavaScript могут хранить значения любого типа данных — это означает, что элементы внутри массива могут быть любого размера, т. е. нет ограничений, что элементы должны быть одного типа.
Почему мы перебираем массив?
Поскольку массив хранит элементы в последовательном порядке, нам нужно пройти или выполнить итерацию по массиву, чтобы найти в нем нужный элемент. Обычно обход занимает время сложности O(n). Мы также пройдемся по массиву, чтобы изменить элементы массива или получить доступ к каждому элементу массива.
Различные методы обхода массива
Существует несколько методов обхода массива. Они есть:
- для цикла
- пока цикл
- цикл for-of
- карта()
- для каждого()
- фильтр()
- уменьшать()
1. для петли
Это один из основных методов перебора массива. Цикл for можно использовать для обхода массива, используя длину массива. В цикле for следует упомянуть три условия.
- Исходное базовое состояние
- Завершающее состояние
- Условие повторения (обычно увеличение или уменьшение)
Пример:
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.