← Назад к вопросам

Что возвращают методы массива?

2.0 Middle🔥 252 комментариев
#JavaScript Core

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Общее понимание возвращаемых значений методов массива в JavaScript

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

Категории методов по типу возвращаемого значения

1. Методы, возвращающие новый массив (не мутирующие исходный)

Эти методы не изменяют исходный массив, а создают и возвращают новый.

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

// map() - возвращает новый массив с результатами вызова функции для каждого элемента
const doubled = numbers.map(n => n * 2);
// doubled: [2, 4, 6, 8, 10], numbers: [1, 2, 3, 4, 5]

// filter() - возвращает новый массив с элементами, прошедшими проверку
const even = numbers.filter(n => n % 2 === 0);
// even: [2, 4], numbers: [1, 2, 3, 4, 5]

// slice() - возвращает новый массив с частью элементов
const slice = numbers.slice(1, 4);
// slice: [2, 3, 4], numbers: [1, 2, 3, 4, 5]

// concat() - возвращает новый массив, объединяя массивы
const combined = numbers.concat([6, 7]);
// combined: [1, 2, 3, 4, 5, 6, 7], numbers: [1, 2, 3, 4, 5]

2. Методы, возвращающие единственное значение

Эти методы агрегируют или проверяют массив, возвращая примитивное значение.

const numbers = [10, 20, 30, 40];

// reduce() - возвращает аккумулированное значение
const sum = numbers.reduce((acc, curr) => acc + curr, 0);
// sum: 100 (число)

// find() - возвращает первый найденный элемент или undefined
const found = numbers.find(n => n > 25);
// found: 30 (число)

// includes() - возвращает boolean
const hasTwenty = numbers.includes(20);
// hasTwenty: true (boolean)

// some() и every() - возвращают boolean
const hasOdd = numbers.some(n => n % 2 !== 0);
const allPositive = numbers.every(n => n > 0);

3. Методы, возвращающие индекс элемента

Эти методы возвращают числовой индекс (или -1, если элемент не найден).

const fruits = ['apple', 'banana', 'cherry', 'banana'];

// indexOf() - возвращает первый индекс элемента
const bananaIndex = fruits.indexOf('banana');
// bananaIndex: 1 (число)

// findIndex() - возвращает индекс первого элемента, удовлетворяющего условию
const index = fruits.findIndex(fruit => fruit.startsWith('c'));
// index: 2 (число)

4. Методы, возвращающие элемент массива

Эти методы извлекают и возвращают конкретный элемент.

const colors = ['red', 'green', 'blue'];

// pop() - удаляет и возвращает последний элемент (мутирует массив!)
const lastColor = colors.pop();
// lastColor: 'blue', colors: ['red', 'green']

// shift() - удаляет и возвращает первый элемент (мутирует массив!)
const firstColor = colors.shift();
// firstColor: 'red', colors: ['green']

5. Методы, возвращающие новый объект итератора

Современные методы, возвращающие специальные объекты-итераторы.

const arr = ['a', 'b', 'c'];

// keys() - возвращает итератор с индексами
const keysIterator = arr.keys();
console.log([...keysIterator]); // [0, 1, 2]

// entries() - возвращает итератор с парами [индекс, значение]
const entriesIterator = arr.entries();
console.log([...entriesIterator]); // [[0, 'a'], [1, 'b'], [2, 'c']]

6. Методы, возвращающие сам массив или undefined

Особая категория методов с особым поведением.

const arr = [1, 2, 3];

// sort() и reverse() - возвращают ссылку на отсортированный/перевернутый массив (мутируют исходный!)
const sorted = arr.sort((a, b) => b - a);
// sorted и arr теперь ссылаются на один массив [3, 2, 1]

// forEach() - возвращает undefined
const result = arr.forEach(x => console.log(x));
// result: undefined

Важные практические выводы

  • Иммутабельность vs мутация: Всегда проверяйте, мутирует ли метод исходный массив. Для функционального программирования предпочитайте map, filter, slice вместо splice, sort, reverse.
  • Цепочки вызовов (chaining): Методы, возвращающие массив (map, filter, slice), можно объединять в цепочки:
    const result = [1, 2, 3, 4, 5]
      .filter(n => n > 2)
      .map(n => n * 10)
      .reduce((sum, n) => sum + n, 0);
    
  • Производительность: Методы, возвращающие новые массивы, создают копии данных, что может влиять на производительность при работе с большими массивами.
  • Совместимость с типами TypeScript: Понимание возвращаемых значений критично для корректной типизации в TypeScript.

Ключевое правило: Всегда сверяйтесь с документацией MDN или спецификацией ECMAScript, если сомневаетесь в поведении конкретного метода, особенно в edge-случаях с разреженными массивами, undefined элементами или нестандартными индексами.

Что возвращают методы массива? | PrepBro