Что делают методы итератора массива и почему я должен их использовать? Есть много способов перебора массива. Мы можем использовать цикл for, циклы while и for of. Однако они обычно используются для повторного цикла, пока условие не будет выполнено. При использовании методов итераторов для каждого элемента массива он будет выполнять итерацию по массиву только один раз. Методы итератора массива являются декларативными, когда мы объявляем, что мы хотим. С циклами for это обязательно, мы даем пошаговые инструкции, как что-то сделать.

Прежде всего, что такое массив? Массив представляет собой упорядоченный список элементов или элементов. Каждый раз, когда вы хотите получить доступ к элементу в массиве, вы обращаетесь к номеру индекса.

Следует отметить, что методы итератора массива принимают функцию обратного вызова в качестве аргумента, есть одно исключение, которое мы обсудим позже. Проще говоря, функция обратного вызова — это функция, которая передается в другую функцию в качестве аргумента. Эта функция обратного вызова что-то сделает или выполнит действие. Функция обратного вызова обычно принимает три аргумента: элемент, индекс и массив. Последние 2 аргумента являются необязательными. Единственный метод, который принимает более 3 аргументов, — это метод сокращения, который будет подробно обсуждаться.

метод forEach()

Метод forEach() перебирает массив и принимает функцию обратного вызова в качестве аргумента. Этот метод ничего не возвращает и не определен. Вы, должно быть, думаете, зачем кому-то хотеть использовать этот метод? Это в основном используется для выполнения действия только для чтения и известно как невыразительный итератор. Я считаю, что это наиболее полезно во время манипулирования DOM после получения и преобразования данных из JSON. Затем я обычно использую этот метод для рендеринга элементов в DOM. Я просто перебираю каждый элемент и передаю его функции обратного вызова, которая что-то для меня сделает. Простой и мощный.

метод find()

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

метод indexOf()

Подобно find(), это вернет первый существующий элемент. Однако по сравнению с методом find() он возвращает только индекс этого элемента. Он будет перебирать массив и принимать элемент того, что вы ищете, в качестве параметра. Если элемент не существует в массиве, он вернет -1. На мой взгляд, этот метод наиболее полезен для определения того, существует элемент или нет. Следует отметить, что в отличие от упомянутых нами методов, этот метод не принимает функцию обратного вызова в качестве аргумента. Этот метод является неразрушающим и не изменит исходный массив.

метод карты()

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

метод фильтра()

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

метод уменьшения()

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

Как упоминалось ранее, функция обратного вызова reduce() отличается тем, что она принимает 4 аргумента. Первые 2 являются обязательными аргументами. Первый аргумент действует как аккумулятор. Назовем эту сумму в нашем примере, обычно это начальное значение или значение, которое было возвращено ранее. Второй — это значение элемента. Наконец, два необязательных аргумента — это индекс и массив.

каждый () метод

Метод итератора Every() проверяет, соответствует ли каждый элемент массива определенному условию, и возвращает значение true или false. Он будет перебирать массив и принимать функцию обратного вызова в качестве аргумента. Этот метод не изменит исходный массив. Это наиболее полезно, когда вы хотите знать, соответствуют ли ВСЕ элементы в массиве условию.

некоторый () метод

Этот метод похож на каждый(), за исключением того, что если какой-либо из элементов в массиве удовлетворяет условию, он возвращает значение true. Это неразрушающе и не изменит исходный массив.

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