Метод findLast() появился в JavaScript как часть стандарта ECMAScript 2023 и уже широко поддерживается всеми актуальными браузерами. Он работает как зеркальное отражение метода find(), но ищет элементы не с начала массива, а с конца — и возвращает первый найденный в таком обратном порядке элемент, удовлетворяющий условию. Если ничего не найдено, возвращается undefined [[1]].

Простейший пример

const array1 = [5, 12, 50, 130, 44];
const found = array1.findLast(element => element > 45);
console.log(found); // 130 — последний элемент больше 45

Поиск в массиве объектов

Часто findLast() применяют для поиска в массивах объектов. Допустим, есть инвентарь товаров, и нужно найти последний продукт, количество которого меньше двух:

const inventory = [
  { name: "apples", quantity: 2 },
  { name: "bananas", quantity: 0 },
  { name: "fish", quantity: 1 },
  { name: "cherries", quantity: 5 },
];

const result = inventory.findLast(({ quantity }) => quantity 

Сложные условия

Можно использовать его и для сложных условий, например, найти последнее простое число в массиве:

function isPrime(n) {
  if (n 

Обработка разрежённых массивов

Важная деталь: findLast() обходит все индексы подряд, включая пустые места в разреженных массивах — они обрабатываются как undefined. Например:

const sparse = [0, 1, , , , 5];
sparse.findLast((val, idx) => {
  console.log(`Index ${idx}: ${val}`);
  return false;
});
// Выведет:
// Index 5: 5
// Index 4: undefined
// Index 3: undefined
// Index 2: undefined
// Index 1: 1
// Index 0: 0

Работа с массивоподобными объектами

Метод также работает на «массивоподобных» объектах — достаточно, чтобы у объекта был length и свойства с целочисленными ключами. Например:

const arrayLike = { length: 3, 0: 2, 1: 7.3, 2: 4 };
const lastInt = Array.prototype.findLast.call(arrayLike, x => Number.isInteger(x));
console.log(lastInt); // 4

Парный метод findLastIndex()

Для получения индекса вместо значения существует парный метод — findLastIndex(). Оба метода экономят время и делают код чище по сравнению с ручными циклами.

Полезные статьи — по почте

Подпишитесь на редакторскую рассылку о фронтенде, новых CSS-штучках и всём, что пригодится разработчику.

Присылаем одно письмо в неделю. Без спама и нейросетей.


«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.

ТелеграмПодкастБесплатные учебники