Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

Эта страница была переведена с английского языка силами сообщества. Вы тоже можете внести свой вклад, присоединившись к русскоязычному сообществу MDN Web Docs.

Array.prototype.map()

BaselineWidely available

Сводка

Методmap() создаёт новый массив с результатом вызова указанной функции для каждого элемента массива.

Синтаксис

const new_array = arr.map(function callback( currentValue[, index[, array]]) {    // Возвращает элемент для new_array}[, thisArg])

Параметры

callback

Функция, вызываемая для каждого элемента массиваarr. Каждый раз, когдаcallback выполняется, возвращаемое значение добавляется вnew_array.

Функцияcallback, создающая элемент в новом массиве, принимает три аргумента:

currentValue

Текущий обрабатываемый элемент массива.

indexНеобязательный

Индекс текущего обрабатываемого элемента в массиве.

arrayНеобязательный

Массив, по которому осуществляется проход.

thisArgНеобязательный

Необязательный параметр. Значение, используемое в качествеthis при вызове функцииcallback

Возвращаемое значение

Новый массив, где каждый элемент является результатомcallback функции.

Описание

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

Функцияcallback вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.

Если в методmap был передан параметрthisArg, при вызовеcallback он будет использоваться в качестве значенияthis. В противном случае в качестве значенияthis будет использоваться значениеundefined. В конечном итоге, значениеthis, наблюдаемое из функцииcallback, определяется согласнообычным правилам определенияthis, видимого из функции.

Методmap не изменяет массив, для которого он был вызван (хотя функцияcallback может это делать).

Диапазон элементов, обрабатываемых методомmap, устанавливается до первого вызова функцииcallback. Элементы, добавленные в массив после начала выполнения методаmap, не будут посещены функциейcallback. Если существующие элементы массива изменяются функциейcallback, их значения, переданные в функцию, будут значениями на тот момент времени, когда методmap посетит их; удалённые элементы посещены не будут.

Примеры

Пример: отображение массива чисел на массив квадратных корней

Следующий код берёт массив чисел и создаёт новый массив, содержащий квадратные корни чисел из первого массива.

js
const numbers = [1, 4, 9];const roots = numbers.map(Math.sqrt);// теперь roots равен [1, 2, 3], а numbers всё ещё равен [1, 4, 9]

Пример: отображение массива чисел с использованием функции, содержащей аргумент

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

js
const numbers = [1, 4, 9];const doubles = numbers.map((num) => num * 2);// теперь doubles равен [2, 8, 18], а numbers всё ещё равен [1, 4, 9]

Пример: обобщённое использованиеmap

Этот пример показывает, как использоватьmap на объекте строкиString для получения массива байт в кодировке ASCII, представляющего значения символов:

js
const map = Array.prototype.map;const charCodes = map.call("Hello World", (x) => x.charCodeAt(0));// теперь charCodes равен [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]

Пример: обобщённое использованиеmap вместе сquerySelectorAll

Этот пример показывает, как пройтись по коллекции объектов, собранных с помощьюquerySelectorAll. В данном случае мы получаем все выбранные опции на экране и печатаем их в консоль:

js
const elems = document.querySelectorAll("select option:checked");const values = Array.prototype.map.call(elems, ({ value }) => value);

Более простым способом будет использование методаArray.from().

Пример: использованиеmap для переворачивания строки

js
const string = "12345";const reversed = Array.prototype.map  .call(string, (x) => x)  .reverse()  .join("");// reversed равен '54321'// Бонус: используйте '===' для проверки того, является ли строка палиндромом

Более простым способом будет использование методаString.split() (см. примеробращение строки при помощи метода split()).

Пример: хитрый вариант использования

(навеяно этой записью в блоге)

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

js
// Рассмотрим пример:["1", "2", "3"].map(parseInt);// Хотя ожидаемый результат вызова равен [1, 2, 3],// в действительности получаем [1, NaN, NaN]// Функция parseInt часто используется с одним аргументом, но она принимает два.// Первый аргумент является выражением, а второй - основанием системы счисления.// В функцию callback Array.prototype.map передаёт 3 аргумента:// элемент, его индекс и сам массив.// Третий аргумент игнорируется parseInt, но не второй, следовательно,// возможна путаница. Смотрите запись в блоге для дополнительной информации.const returnInt = (element) => parseInt(element, 10);["1", "2", "3"].map(returnInt);// Результатом является массив чисел (как и ожидалось)// Простейший способ добиться вышеозначенного поведения и избежать чувства "чё за!?":["1", "2", "3"].map(Number); // [1, 2, 3]

Спецификации

Specification
ECMAScript® 2026 Language Specification
# sec-array.prototype.map

Совместимость с браузерами

Смотрите также

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp