- Array.prototype.findLastIndex()
- Try it
- Syntax
- Parameters
- Return value
- Description
- Examples
- Find the index of the last prime number in an array
- Using findLastIndex() on sparse arrays
- Calling findLastIndex() on non-array objects
- Specifications
- Browser compatibility
- See also
- Found a content problem with this page?
- Получаем последний элемент массива в JavaScript
- Комментарии ( 0 ):
- Array.prototype.lastIndexOf()
- Интерактивный пример
- Синтаксис
- Параметры
- Описание
- Примеры
- Пример: использование lastIndexOf()
- Пример: нахождение всех вхождений элемента
- Полифил
- Спецификации
- Совместимость с браузерами
- Замечания по совместимости
- Смотрите также
- Found a content problem with this page?
- MDN
- Support
- Our communities
- Developers
Array.prototype.findLastIndex()
The findLastIndex() method iterates the array in reverse order and returns the index of the first element that satisfies the provided testing function. If no elements satisfy the testing function, -1 is returned.
See also the findLast() method, which returns the value of last element that satisfies the testing function (rather than its index).
Try it
Syntax
findLastIndex(callbackFn) findLastIndex(callbackFn, thisArg)
Parameters
A function to execute for each element in the array. It should return a truthy value to indicate a matching element has been found, and a falsy value otherwise. The function is called with the following arguments:
The current element being processed in the array.
The index of the current element being processed in the array.
The array findLastIndex() was called upon.
A value to use as this when executing callbackFn . See iterative methods.
Return value
The index of the last (highest-index) element in the array that passes the test. Otherwise -1 if no matching element is found.
Description
The findLastIndex() method is an iterative method. It calls a provided callbackFn function once for each element in an array in descending-index order, until callbackFn returns a truthy value. findLastIndex() then returns the index of that element and stops iterating through the array. If callbackFn never returns a truthy value, findLastIndex() returns -1 .
callbackFn is invoked for every index of the array, not just those with assigned values. Empty slots in sparse arrays behave the same as undefined .
findLastIndex() does not mutate the array on which it is called, but the function provided as callbackFn can. Note, however, that the length of the array is saved before the first invocation of callbackFn . Therefore:
- callbackFn will not visit any elements added beyond the array’s initial length when the call to findLastIndex() began.
- Changes to already-visited indexes do not cause callbackFn to be invoked on them again.
- If an existing, yet-unvisited element of the array is changed by callbackFn , its value passed to the callbackFn will be the value at the time that element gets visited. Deleted elements are visited as if they were undefined .
Warning: Concurrent modifications of the kind described above frequently lead to hard-to-understand code and are generally to be avoided (except in special cases).
The findLastIndex() method is generic. It only expects the this value to have a length property and integer-keyed properties.
Examples
Find the index of the last prime number in an array
The following example returns the index of the last element in the array that is a prime number, or -1 if there is no prime number.
function isPrime(element) if (element % 2 === 0 || element 2) return false; > for (let factor = 3; factor Math.sqrt(element); factor += 2) if (element % factor === 0) return false; > > return true; > console.log([4, 6, 8, 12].findLastIndex(isPrime)); // -1, not found console.log([4, 5, 7, 8, 9, 11, 12].findLastIndex(isPrime)); // 5
Using findLastIndex() on sparse arrays
You can search for undefined in a sparse array and get the index of an empty slot.
.log([1, , 3].findLastIndex((x) => x === undefined)); // 1
Calling findLastIndex() on non-array objects
The findLastIndex() method reads the length property of this and then accesses each property whose key is a nonnegative integer less than length .
const arrayLike = length: 3, 0: 2, 1: 7.3, 2: 4, 3: 3, // ignored by findLastIndex() since length is 3 >; console.log( Array.prototype.findLastIndex.call(arrayLike, (x) => Number.isInteger(x)), ); // 2
Specifications
Browser compatibility
BCD tables only load in the browser
See also
Found a content problem with this page?
This page was last modified on Jun 27, 2023 by MDN contributors.
Your blueprint for a better internet.
Получаем последний элемент массива в JavaScript
Массив в JavaScript — это объект-контейнер, содержащий фиксированное количество значений одного типа. Длина массива, после его создания, останется постоянной. В данной статье мы рассмотрим различные методы доступа к последнему элементу массива.
Как получить последний элемент массива?
1 — Используем метод slice() массива для возврата определенного элемента.
2 — Извлекаем последний элемент, используя массив отрицательных индексов array.slice(-1).
3 — Сохраняем искомое значение в переменной.
Далее мы рассмотрим варианты реализации кода.
Использование свойства длины массива.
Свойство length возвращает количество элементов в массиве. Вычитание 1 из длины массива дает индекс последнего элемента массива, с помощью которого можно получить доступ к последнему элементу. Причина, по которой мы вычитаем 1 из длины, заключается в том, что в JavaScript нумерация индексов массива начинается с 0. т. е. индекс 1-го элемента будет равен 0. Поэтому индекс последнего элемента будет равен длине массива-1.
let array = [2, 4, 6, 8, 10, 12, 14, 16];
let lastElem = array[array.length — 1];
Использование метода slice().
Метод slice() возвращает определенные элементы из массива в виде нового объекта массива. Этот метод выбирает элементы, начинающиеся с заданного начального индекса и заканчивающиеся заданным конечным индексом, исключая элемент в конечном индексе. Метод slice() не изменяет существующий массив. Предоставление одного значения индекса возвращает элемент в этой позиции, а отрицательное значение индекса вычисляет индекс с конца массива.
let array = [2, 4, 6, 8, 10, 12, 14, 16];
let lastElem = array.slice(-1);
Использование метода pop().
Метод pop() извлекает/удаляет последний элемент массива и возвращает его. Этот метод изменяет длину массива.
let array = [2, 4, 6, 8, 10, 12, 14, 16];
let lastElem = array.pop();
Давайте теперь используем все три метода для массива, чтобы получить последний элемент и проверить, какой метод является самым быстрым:
let array = [2, 4, 6, 8, 10, 12, 14, 16];
console.time(‘array length property’);
let lastElem = array[array.length — 1];
console.log(lastElem);
console.timeEnd(‘array length property’);
console.time(‘array slice method’);
let lastElem1 = array.slice(-1);
console.log(lastElem1);
console.timeEnd(‘array slice method’);
console.time(‘array pop method’);
let lastElem2 = array.pop();
console.log(lastElem2);
console.timeEnd(‘array pop method’);
//16
//array length property: 7 ms
//[ 16 ]
//array slice method: 5 ms
//16
//array pop method: 2 ms
И как вы можете видеть, метод pop() является самым быстрым. Вы можете использовать его, если вас устраивает изменение массива. Если вы не хотите изменять массив, то используйте метод slice().
Создано 14.09.2021 09:42:02
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - BB-код ссылки для форумов (например, можете поставить её в подписи):
Комментарии ( 0 ):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.
Array.prototype.lastIndexOf()
Метод lastIndexOf() возвращает последний индекс, по которому данный элемент может быть найден в массиве или -1, если такого индекса нет. Массив просматривается от конца к началу, начиная с индекса fromIndex .
Интерактивный пример
Синтаксис
arr.lastIndexOf(searchElement[, fromIndex = arr.length])
Параметры
Искомый элемент в массиве.
Необязательный параметр. Индекс, с которого начинать поиск в обратном направлении. Если индекс больше или равен длине массива, просматривается весь массив. Если индекс является отрицательным числом, он трактуется как смещение с конца массива. Обратите внимание: если индекс отрицателен, массив всё равно просматривается от конца к началу. Если рассчитанный индекс оказывается меньше 0, массив даже не просматривается. Значение по умолчанию равно длине массива, что означает, что просматривается весь массив.
Описание
Метод lastIndexOf() сравнивает искомый элемент searchElement с элементами в массиве, используя строгое сравнение (en-US) (тот же метод используется оператором === , тройное равно).
Примеры
Пример: использование lastIndexOf()
В следующем примере метод lastIndexOf() используется для поиска значений в массиве.
var array = [2, 5, 9, 2]; array.lastIndexOf(2); // 3 array.lastIndexOf(7); // -1 array.lastIndexOf(2, 3); // 3 array.lastIndexOf(2, 2); // 0 array.lastIndexOf(2, -2); // 0 array.lastIndexOf(2, -1); // 3
Пример: нахождение всех вхождений элемента
В следующем примере метод lastIndexOf() используется для поиска всех индексов элемента в указанном массиве, которые с помощью метода push() добавляются в другой массив.
var indices = []; var array = ['a', 'b', 'a', 'c', 'a', 'd']; var element = 'a'; var idx = array.lastIndexOf(element); while (idx != -1) indices.push(idx); idx = (idx > 0 ? array.lastIndexOf(element, idx - 1) : -1); > console.log(indices); // [4, 2, 0]
Обратите внимание, что мы обрабатываем случай idx == 0 отдельно, поскольку элемент всегда будет найден, независимо от параметра fromIndex , если он является первым элементом в массиве. Этим он отличается от метода indexOf() .
Полифил
Метод lastIndexOf() был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может отсутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать lastIndexOf() в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; он предполагает, что Object , TypeError , Number , Math.floor() , Math.abs() и Math.min() имеют свои первоначальные значения.
// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.15 // Ссылка (en): http://es5.github.io/#x15.4.4.15 // Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.15 if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(searchElement/*, fromIndex*/) 'use strict'; if (this === void 0 || this === null) throw new TypeError(); > var n, k, t = Object(this), len = t.length >>> 0; if (len === 0) return -1; > n = len - 1; if (arguments.length > 1) n = Number(arguments[1]); if (n != n) n = 0; > else if (n != 0 && n != (1 / 0) && n != -(1 / 0)) n = (n > 0 || -1) * Math.floor(Math.abs(n)); > > for (k = n >= 0 ? Math.min(n, len - 1) : len - Math.abs(n); k >= 0; k--) if (k in t && t[k] === searchElement) return k; > > return -1; >; >
И снова обратите внимание, что данная реализация нацелена на абсолютную совместимость с методом lastIndexOf() , реализованным в Firefox и движке JavaScript SpiderMonkey, включая несколько случаев, которые являются спорными крайними случаями. Если вы используете этот код в реальных приложениях, вы можете вычислять параметр from менее сложным образом, игнорируя эти случаи.
Спецификации
Совместимость с браузерами
BCD tables only load in the browser
Замечания по совместимости
- Начиная с Firefox 47, метод больше не будет возвращать -0 . Например, [0].lastIndexOf(0, -0) теперь всегда будет возвращать +0 (баг 1242043).
Смотрите также
Found a content problem with this page?
This page was last modified on 17 февр. 2023 г. by MDN contributors.
Your blueprint for a better internet.
MDN
Support
Our communities
Developers
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.