Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Аргументы метода Array.map()
Array.map() — один из самых используемых методов для трансформации массивов. Он принимает несколько аргументов, каждый из которых имеет определённую роль.
Синтаксис
array.map(callback(element, index, array), thisArg)
Основные аргументы
1. Callback функция (обязательный)
Это функция, которая будет вызвана для каждого элемента массива. Она может принимать три параметра:
a) element (текущий элемент)
- Значение текущего элемента, который обрабатывается
- Это обязательный параметр внутри callback
const numbers = [1, 2, 3];
const doubled = numbers.map(element => element * 2);
console.log(doubled); // [2, 4, 6]
b) index (индекс элемента)
- Индекс текущего элемента (начинается с 0)
- Опциональный параметр
const fruits = ["яблоко", "апельсин", "банан"];
const withIndex = fruits.map((fruit, index) => {
return `${index}: ${fruit}`;
});
console.log(withIndex);
// ["0: яблоко", "1: апельсин", "2: банан"]
c) array (исходный массив)
- Сам массив, над которым производится операция
- Опциональный параметр
- Редко используется, но полезен в некоторых случаях
const arr = [1, 2, 3];
const result = arr.map((el, idx, originalArray) => {
console.log(originalArray); // [1, 2, 3] - печатается три раза
return el * 2;
});
console.log(result); // [2, 4, 6]
2. thisArg (опциональный)
Это значение, которое будет использовано как this внутри callback функции. Игнорируется, если callback — стрелочная функция.
const multiplier = {
factor: 10,
multiply(arr) {
// Обычная функция — используется thisArg
return arr.map(function(el) {
return el * this.factor;
}, this);
}
};
console.log(multiplier.multiply([1, 2, 3])); // [10, 20, 30]
const obj = { value: 100 };
const arr = [1, 2, 3];
// Стрелочная функция — thisArg игнорируется
const result = arr.map(el => el + this.value, obj);
console.log(result); // [1, 2, 3] — this не то, что ожидалось
Практические примеры
Трансформация объектов
const users = [
{ name: "Алиса", age: 25 },
{ name: "Боб", age: 30 },
{ name: "Виктор", age: 35 }
];
const names = users.map(user => user.name);
console.log(names); // ["Алиса", "Боб", "Виктор"]
Использование всех параметров
const prices = [100, 200, 300];
const formatted = prices.map((price, index, arr) => {
const tax = price * 0.1;
const total = arr.reduce((sum, p) => sum + p, 0);
return {
position: index + 1,
price: price,
tax: tax,
arrayLength: arr.length
};
});
console.log(formatted);
// [
// { position: 1, price: 100, tax: 10, arrayLength: 3 },
// { position: 2, price: 200, tax: 20, arrayLength: 3 },
// { position: 3, price: 300, tax: 30, arrayLength: 3 }
// ]
Важные моменты
- Не изменяет исходный массив — map возвращает новый массив
- Всегда создаёт новый массив — даже если callback не возвращает значение (будут undefined)
- Проходит по всем элементам — нельзя пропустить элемент (в отличие от forEach)
- Возвращаемое значение — результат callback становится элементом нового массива
const original = [1, 2, 3];
const mapped = original.map(x => x * 2);
console.log(original); // [1, 2, 3] — не изменился
console.log(mapped); // [2, 4, 6] — новый массив
TypeScript типизация
const arr: number[] = [1, 2, 3];
const result: number[] = arr.map((el: number, idx: number, array: number[]) => el * 2);
Все три параметра в callback имеют стандартные типы, которые соответствуют типу массива и индексу.