Часть III статьи « Странные вопросы из моего первого месяца программирования»

Есть несколько способов перебора массивов в JavaScript. У всех них есть одна общая черта: они выполняют заданную функцию в каждом элементе вашего массива; разница в том, что вы получите взамен.

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

.map = преобразовать

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

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

.filter = выберите

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

IRL: Если у вас есть база данных клиентов и вам нужно найти только клиентов старше 18 лет, вы можете использовать для этого фильтр.

.forEach = выполнить

forEach полезен, когда вам просто нужно запустить функцию для каждого элемента в массиве, без необходимости получать возврат.

IRL: Вы можете использовать forEach для обработки и сохранения данных в вашей базе данных.

.reduce = уменьшить

Если вам нужно, чтобы ваш массив был уменьшен до одного значения, сокращение - очень элегантное решение:

IRL: Классический пример - получить сумму чисел в определенном массиве. Например, если у вас есть каталог книг в формате JSON, вы можете проверить, сколько из этих книг было опубликовано, когда ваша бабушка была вашего возраста.

для цикла = до тех пор, пока условие не станет ложным

Эту итерацию полезно использовать, когда вы знаете, сколько раз вы хотите выполнить функцию.

в то время как цикл = в то время как условие истинно

Если вы не знаете заранее, сколько раз выполнять функцию, цикл while может быть хорошей идеей. В реальной жизни эту итерацию можно использовать, например, для слайд-шоу изображений на телефоне, пока вы не нажмете «Стоп». Или если ваш игровой персонаж продолжает бежать, пока вы нажимаете клавишу со стрелкой. В обоих случаях вы заранее не знаете, когда пользователь прервет цикл. Но будьте осторожны: если вы установите условие while равным true, вы можете случайно создать бесконечный цикл Oo

Тем не мение…

Обратите внимание, что для вашей функции может не быть одного правильного ответа. Если вы присмотритесь, вы увидите, что цикл for может хорошо выполнять работу метода map или reduce, или что циклы while отлично заменяют циклы for. Но чем больше мы кодируем, тем больше мы видим, что одни варианты подходят лучше, чем другие. Вы можете выбрать определенный метод, чтобы сделать ваш код более читаемым, или вы можете выбрать другой для повышения производительности. В любом случае, если вы знаете свои инструменты, у вас есть более широкий набор опций, чтобы сделать ваш код более эффективным и дружелюбным для машин и других людей :)

Серия Странные вопросы из первого месяца программирования
Часть I: Как индексы и значения массивов работают в циклах for
Часть II: Как писать функции, которые идут внутри метода фильтрации