Методы JavaScript – это действия, которые могут быть выполнены с объектами. Итак, вот мой новый пост в блоге, в котором я расскажу о двух методах JavaScript map()
и filter()
. Объясню легко и подробно.
-> Метод map()
используется для применения функции к каждому элементу массива, а затем возвращает новый массив. Давайте взглянем на синтаксис:-
let newArray = array.map( (v, i, a) => { // return element to newArray }); // newArray - the new array that is returned // array - the array to run the map function on // v - the current value being processed // i - the current index of the value being processed // a - the original array
Метод map()
можно рассматривать как цикл for, предназначенный специально для преобразования значений. Давайте взглянем на этот пример:
let nums = [11, 12, 13, 14]; let minus10 = []; for(let i = 0; i < nums.length; i++) { minus10[i] = nums[i] - 10; }
Код приводит к созданию нового массива, в котором каждое значение старого массива уменьшается на 10. Да, это работает, но есть более простой способ добиться того же результата.
Теперь давайте перепишем предыдущую функцию, используя метод map()
.
let nums = [11, 12, 13, 14]; let minus10 = nums.map(value => value - 10); // minus10 = [1, 2, 3, 4]
Просто смотри. Без какой-либо петли
И с помощью функции arrow у нас есть приятная и понятная функция для создания того же массива. Поскольку мы используем только значение, мы передаем его только методу map()
.
Здесь, в этом примере, мы будем использовать как аргументы value, так и index.
let nums = [11, 12, 13, 14]; let newArray = nums.map( (v, i) => { return { value: v, index: i }; }); // newArr = [ // {value: 11, index: 0}, // {value: 12, index: 1}, // {value: 13, index: 2}, // {value: 14, index: 3} // ]
Я думаю, теперь вы видите, что все, что мы возвращаем в методе map()
, используется для создания нового массива. Вы можете использовать текущее значение, текущий индекс или даже весь массив, чтобы определить, что возвращать.
let nums = [11, 12, 13, 14]; let cats = nums.map ( ( ) => 'cats'); // cats = [`cat`, `cat`, `cat`, `cat` ]
До сих пор все примеры преобразовывали все значения в старом массиве. Давайте рассмотрим способ преобразования некоторых значений в нашем массиве.
let nums = [11, 12, 13, 14]; ley newArr = nums.map(v => v % 2 === 0 ? v * 2 : v); // newArr = [11, 24, 13, 28];
Сначала мы проверили, имеет ли значение, разделенное на два, остаток от нуля. Если остаток равен нулю, мы вернем v * 2 или удвоим текущее значение.
Оригинал: “https://dev.to/rahxuls/map-method-explained-3g6m”