Методы карты и фильтра предназначены для разных целей в программировании. В зависимости от того, чего вы хотите достичь, может быть очень полезно глубоко понять разницу между этими двумя методами. В этой чрезвычайно короткой статье я объясню прозаическую, но важную разницу между этими двумя методами.
Однажды я играл со своим кодом, чтобы понять некоторые концепции Javascript и просто решить некоторые задачи. Я хотел вернуть отфильтрованные значения из массива без использования метода .filter(). Моей первой мыслью был метод .map(). Поэтому я написал код:
Будучи младшим разработчиком в режиме уверенности, также известным как «я слишком хорош для этого», я получил несколько неожиданный ответ:
Метод .map() сделал именно то, что должен. Вопрос, который возник более ярко, был: почему логическое значение и почему все значения?
Итак, я начал играть с запрещенным методом .filter(), и это произошло:
ааа… хорошо… вот почему .filter() был запрещен….
Сразу же мой картофельный мозг начал связывать шаблоны между этими двумя примерами, и быстрый вывод был таким: .map() обуславливает каждое значение и проверяет каждый элемент массива на его истинность. Если бы это было математическое выражение, оно перебирало бы каждый элемент и возвращало результат. Принимая во внимание, что .filter() уже отфильтровал значения на основе условных параметров.
Оба эти метода могут немного сбивать с толку в начале пути разработки, потому что оба используются с массивами и возвращают новый массив. Более того, оба метода принимают обратный вызов в качестве параметра и перебирают значения для определенного условия. Тем не менее, это простое различие — это все, что вам нужно знать в целом.
Подытожим быстро:
- .map() проверяет каждый элемент в массиве, тогда как .filter() возвращает элемент после выполнения определенного условия
- оба метода принимают обратный вызов в качестве параметра для проверки каждого значения
- оба возвращают новый массив