С недавних пор в JavaScript появились два полезных метода для массивов: findLast и findLastIndex. Они делают то же, что и привычные find и findIndex, только проходят массив с конца.

Зачем это нужно

Когда мы используем find, массив перебирается слева направо. Это нормально, но бывает, что нужный элемент находится ближе к концу. В таких случаях find всё равно обходит весь массив до тех пор, пока не дойдёт до нужного значения.

Если массив большой, а элемент — где-то в конце, это лишняя работа. findLast решает эту проблему: он начинает перебор с конца и останавливается на первом подходящем элементе. Это может быть быстрее и экономнее по ресурсам.

То же самое касается findLastIndex, только он возвращает индекс найденного элемента, а не сам элемент. Примеры

const arr = [0, 1, 2, 3, 7];

// find — идёт с начала
const res = arr.find(el => {
  console.log('Поиск');
  return el === 7;
});
// В консоли будет 5 раз "Поиск"

// findLast — идёт с конца
const res2 = arr.findLast(el => {
  console.log('Поиск');
  return el === 7;
});
// В консоли — 1 раз "Поиск"

Если в массиве несколько одинаковых значений, find и findLast вернут разные результаты:

const arr = [1, 2, 3, 4, 2];

arr.find(x => x === 2);      // 1-й элемент — 2
arr.findLast(x => x === 2);  // последний — 2

То же касается findIndex и findLastIndex:

arr.findIndex(x => x === 2);      // 1
arr.findLastIndex(x => x === 2);  // 4

Когда использовать

  • Если вы точно знаете, что нужный элемент — ближе к концу.
  • Если вам важна производительность при работе с большими массивами.
  • Если хотите получить последний подходящий элемент, а не первый.

Всё просто: если find нужен для поиска начала, findLast — для конца.

Совместимость

Методы findLast и findLastIndex появились в ECMAScript 2022 и вошли в Baseline в статусе Widely available в феврале 2025. Это значит, что сейчас поддержка новых методов есть во всех современных браузерах.

Проверка на поддержку в старых браузерах:

if (typeof [].findLast === 'function') {
  // Можно использовать
}