Baseline Widely available
ÐеÑод lastIndexOf()
возвÑаÑÐ°ÐµÑ Ð¿Ð¾Ñледний индекÑ, по коÑоÑÐ¾Ð¼Ñ Ð´Ð°Ð½Ð½Ñй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ð°Ð¹Ð´ÐµÐ½ в маÑÑиве или -1, еÑли Ñакого индекÑа неÑ. ÐаÑÑив пÑоÑмаÑÑиваеÑÑÑ Ð¾Ñ ÐºÐ¾Ð½Ñа к наÑалÑ, наÑÐ¸Ð½Ð°Ñ Ñ Ð¸Ð½Ð´ÐµÐºÑа fromIndex
.
const animals = ["Dodo", "Tiger", "Penguin", "Dodo"];
console.log(animals.lastIndexOf("Dodo"));
// Expected output: 3
console.log(animals.lastIndexOf("Tiger"));
// Expected output: 1
СинÑакÑиÑ
arr.lastIndexOf(searchElement[, fromIndex = arr.length])ÐаÑамеÑÑÑ
searchElement
ÐÑкомÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² маÑÑиве.
fromIndex
ÐеобÑзаÑелÑнÑй паÑамеÑÑ. ÐндекÑ, Ñ ÐºÐ¾ÑоÑого наÑинаÑÑ Ð¿Ð¾Ð¸Ñк в обÑаÑном напÑавлении. ÐÑли Ð¸Ð½Ð´ÐµÐºÑ Ð±Ð¾Ð»ÑÑе или Ñавен длине маÑÑива, пÑоÑмаÑÑиваеÑÑÑ Ð²ÐµÑÑ Ð¼Ð°ÑÑив. ÐÑли Ð¸Ð½Ð´ÐµÐºÑ ÑвлÑеÑÑÑ Ð¾ÑÑиÑаÑелÑнÑм ÑиÑлом, он ÑÑакÑÑеÑÑÑ ÐºÐ°Ðº ÑмеÑение Ñ ÐºÐ¾Ð½Ñа маÑÑива. ÐбÑаÑиÑе внимание: еÑли Ð¸Ð½Ð´ÐµÐºÑ Ð¾ÑÑиÑаÑелен, маÑÑив вÑÑ Ñавно пÑоÑмаÑÑиваеÑÑÑ Ð¾Ñ ÐºÐ¾Ð½Ñа к наÑалÑ. ÐÑли ÑаÑÑÑиÑаннÑй Ð¸Ð½Ð´ÐµÐºÑ Ð¾ÐºÐ°Ð·ÑваеÑÑÑ Ð¼ÐµÐ½ÑÑе 0, маÑÑив даже не пÑоÑмаÑÑиваеÑÑÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ñавно длине маÑÑива, ÑÑо ознаÑаеÑ, ÑÑо пÑоÑмаÑÑиваеÑÑÑ Ð²ÐµÑÑ Ð¼Ð°ÑÑив.
ÐеÑод lastIndexOf()
ÑÑÐ°Ð²Ð½Ð¸Ð²Ð°ÐµÑ Ð¸ÑкомÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ searchElement
Ñ ÑлеменÑами в маÑÑиве, иÑполÑзÑÑ ÑÑÑогое ÑÑавнение (ÑÐ¾Ñ Ð¶Ðµ меÑод иÑполÑзÑеÑÑÑ Ð¾Ð¿ÐµÑаÑоÑом ===
, ÑÑойное Ñавно).
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
менее ÑложнÑм обÑазом, игноÑиÑÑÑ ÑÑи ÑлÑÑаи.
-0
. ÐапÑимеÑ, [0].lastIndexOf(0, -0)
ÑепеÑÑ Ð²Ñегда бÑÐ´ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ +0
(Firefox bug 1242043).RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4