Что быстрее в карте JavaScript по сравнению с forEach?

И map(), и forEach() являются методами массива в JavaScript, которые используются для перебора каждого элемента в массиве. Однако они имеют разные функциональные возможности и поэтому работают по-разному в определенных сценариях. В этой статье мы рассмотрим различия между map() и forEach() и то, как они влияют на производительность.

Метод map()

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

Вот пример использования map() для удвоения каждого числа в массиве:

const originalArray = [1, 2, 3, 4, 5];
const doubledArray = originalArray.map((num) => num * 2);
console.log(doubledArray); // Output: [2, 4, 6, 8, 10]

В приведенном выше примере мы передаем стрелочную функцию методу map(), который принимает каждый элемент originalArray, умножает его на 2 и возвращает результат. Затем map() создает новый массив с результатами и присваивает его переменной doubledArray.

Метод forEach()

Метод forEach() используется для выполнения функции над каждым элементом массива. Он не создает новый массив, как это делает map(), а вместо этого выполняет действие над каждым элементом существующего массива.

Вот пример использования forEach() для регистрации каждого элемента в массиве:

const originalArray = ['apple', 'banana', 'orange'];
originalArray.forEach((item) => console.log(item));
// Output: "apple", "banana", "orange"

В приведенном выше примере мы передаем стрелочную функцию методу forEach(), который выводит каждый элемент originalArray на консоль.

Различия в производительности

Хотя и map(), и forEach() выполняют схожие действия, в их производительности есть некоторые ключевые различия.

Одно существенное отличие состоит в том, что map() возвращает новый массив, а forEach() — нет. Это означает, что если вам нужно создать новый массив на основе значений существующего массива, map() будет лучшим выбором. С другой стороны, если вам нужно выполнить действие только над каждым элементом массива и не нужно создавать новый массив, forEach() может быть лучшим выбором.

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

С точки зрения скорости принято считать, что forEach() быстрее, чем map() для простых итераций, так как forEach() не нужно создавать новый массив. Однако это может варьироваться в зависимости от конкретного варианта использования и объема обрабатываемых данных.

Пример

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

const numbers = [1, 2, 3, 4, 5];

// Using map()
console.time('map');
const doubledNumbersMap = numbers.map((num) => num * 2);
console.timeEnd('map');

// Using forEach()
console.time('forEach');
const doubledNumbersForEach = [];
numbers.forEach((num)
{
doubledNumbersForEach.push(num * 2);
});
console.timeEnd('forEach');

console.log(doubledNumbersMap); // Output: [2, 4, 6, 8, 10]
console.log(doubledNumbersForEach); // Output: [2, 4, 6, 8, 

В приведенном выше примере мы создаем массив чисел, а затем используем `map()` и `forEach()`, чтобы удвоить каждое число и вернуть новый массив с результатами. Мы используем `console.time()` и `console.timeEnd()` для измерения производительности каждого метода.

Когда мы запускаем этот код, мы получаем следующий вывод:

map: 0.012939453125ms
forEach: 0.007080078125ms

В этом случае мы видим, что forEach() работает быстрее, чем map(). Однако важно отметить, что этот результат может варьироваться в зависимости от конкретного варианта использования и объема обрабатываемых данных. Также стоит отметить, что разница в производительности между `map()` и `forEach()` в большинстве случаев может быть незначительной.

*Заключение**

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

С точки зрения производительности, `forEach()` обычно быстрее, чем `map()` для простых итераций, так как не создает новый массив. Однако это может варьироваться в зависимости от конкретного варианта использования и объема обрабатываемых данных. Поэтому важно учитывать конкретные требования вашего кода при выборе между `map()` и `forEach()`.

Спасибо за прочтение!

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

Не забудь подписаться⭐️

Страница Facebook: https://www.facebook.com/designTechWorld1

Страница в Instagram: https://www.instagram.com/techd.esign/

Канал YouTube: https://www.youtube.com/@tech..Design/

Твиттер: https://twitter.com/sumit_singh2311

Используемое оборудование:

Ноутбук: https://amzn.to/3yKkzaC

Смотрите:https://amzn.to/41cialm

Вы можете предпочесть React Book: https://amzn.to/3Tw29nx

Некоторые дополнительные книги, связанные с языками программирования:

https://amzn.to/3z3tW5s

https://amzn.to/40n4m6O

https://amzn.to/3Jzstse

https://amzn.to/3nbl8aE

  • Важный отказ от ответственности — «Amazon и логотип Amazon являются товарными знаками Amazon.com, Inc. или ее дочерних компаний».

Дополнительные материалы на PlainEnglish.io.

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