Baseline Widely available
СводкаÐеÑод indexOf()
возвÑаÑÐ°ÐµÑ Ð¿ÐµÑвÑй индекÑ, по коÑоÑÐ¾Ð¼Ñ Ð´Ð°Ð½Ð½Ñй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ð°Ð¹Ð´ÐµÐ½ в маÑÑиве или -1, еÑли Ñакого индекÑа неÑ.
arr.indexOf(searchElement[, fromIndex = 0])ÐаÑамеÑÑÑ
searchElement
ÐÑкомÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² маÑÑиве.
fromIndex
ÐндекÑ, Ñ ÐºÐ¾ÑоÑого наÑинаÑÑ Ð¿Ð¾Ð¸Ñк. ÐÑли Ð¸Ð½Ð´ÐµÐºÑ Ð±Ð¾Ð»ÑÑе или Ñавен длине маÑÑива, возвÑаÑаеÑÑÑ -1, ÑÑо ознаÑаеÑ, ÑÑо маÑÑив даже не пÑоÑмаÑÑиваеÑÑÑ. ÐÑли Ð¸Ð½Ð´ÐµÐºÑ ÑвлÑеÑÑÑ Ð¾ÑÑиÑаÑелÑнÑм ÑиÑлом, он ÑÑакÑÑеÑÑÑ ÐºÐ°Ðº ÑмеÑение Ñ ÐºÐ¾Ð½Ñа маÑÑива. ÐбÑаÑиÑе внимание: еÑли Ð¸Ð½Ð´ÐµÐºÑ Ð¾ÑÑиÑаÑелен, маÑÑив вÑÑ Ñавно пÑоÑмаÑÑиваеÑÑÑ Ð¾Ñ Ð½Ð°Ñала к конÑÑ. ÐÑли ÑаÑÑÑиÑаннÑй Ð¸Ð½Ð´ÐµÐºÑ Ð¾ÐºÐ°Ð·ÑваеÑÑÑ Ð¼ÐµÐ½ÑÑе 0, поиÑк ведÑÑÑÑ Ð¿Ð¾ вÑÐµÐ¼Ñ Ð¼Ð°ÑÑивÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ñавно 0, ÑÑо ознаÑаеÑ, ÑÑо пÑоÑмаÑÑиваеÑÑÑ Ð²ÐµÑÑ Ð¼Ð°ÑÑив.
ÐеÑод indexOf()
ÑÑÐ°Ð²Ð½Ð¸Ð²Ð°ÐµÑ Ð¸ÑкомÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ searchElement
Ñ ÑлеменÑами в маÑÑиве, иÑполÑзÑÑ ÑÑÑогое ÑÑавнение (ÑÐ¾Ñ Ð¶Ðµ меÑод иÑполÑзÑеÑÑÑ Ð¾Ð¿ÐµÑаÑоÑом ===
, ÑÑойное Ñавно).
indexOf()
Ð ÑледÑÑÑем пÑимеÑе indexOf()
иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка знаÑений в маÑÑиве.
var array = [2, 5, 9];
array.indexOf(2); // 0
array.indexOf(7); // -1
array.indexOf(9, 2); // 2
array.indexOf(2, -1); // -1
array.indexOf(2, -3); // 0
ÐÑимеÑ: наÑ
ождение вÑеÑ
вÑ
ождений ÑлеменÑа
Ð ÑледÑÑÑем пÑимеÑе indexOf()
иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка вÑеÑ
индекÑов ÑлеменÑа в Ñказанном маÑÑиве, коÑоÑÑе Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ push()
добавлÑÑÑÑÑ Ð² дÑÑгой маÑÑив.
var indices = [];
var array = ["a", "b", "a", "c", "a", "d"];
var element = "a";
var idx = array.indexOf(element);
while (idx != -1) {
indices.push(idx);
idx = array.indexOf(element, idx + 1);
}
console.log(indices);
// [0, 2, 4]
ÐолиÑил
ÐеÑод indexOf()
бÑл добавлен к ÑÑандаÑÑÑ ECMA-262 в 5-м издании; поÑÑÐ¾Ð¼Ñ Ð¾Ð½ Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑÑÑÑÑÑвоваÑÑ Ð² дÑÑгиÑ
ÑеализаÑиÑÑ
ÑÑандаÑÑа. ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑабоÑаÑÑ Ñ Ð½Ð¸Ð¼, добавив ÑледÑÑÑий код в наÑало ваÑиÑ
ÑкÑипÑов, он позволÑÐµÑ Ð¸ÑполÑзоваÑÑ indexOf()
в ÑеализаÑиÑÑ
, коÑоÑÑе не поддеÑживаÑÑ ÑÑÐ¾Ñ Ð¼ÐµÑод. ÐÑÐ¾Ñ Ð°Ð»Ð³Ð¾ÑиÑм ÑвлÑеÑÑÑ ÑоÑно Ñем, ÑÑо опиÑан в ECMA-262 5-го изданиÑ; он пÑедполагаеÑ, ÑÑо TypeError
и Math.abs()
имеÑÑ Ñвои пеÑвонаÑалÑнÑе знаÑениÑ.
// Шаги алгоÑиÑма ECMA-262, 5-е издание, 15.4.4.14
// СÑÑлка (en): http://es5.github.io/#x15.4.4.14
// СÑÑлка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.14
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function (searchElement, fromIndex) {
var k;
// 1. Ðоложим O ÑавнÑм ÑезÑлÑÑаÑÑ Ð²Ñзова ToObject Ñ Ð¿ÐµÑедаÑей емÑ
// знаÑÐµÐ½Ð¸Ñ this в каÑеÑÑве аÑгÑменÑа.
if (this == null) {
throw new TypeError('"this" is null or not defined');
}
var O = Object(this);
// 2. Ðоложим lenValue ÑавнÑм ÑезÑлÑÑаÑÑ Ð²Ñзова внÑÑÑеннего меÑода Get
// обÑекÑа O Ñ Ð°ÑгÑменÑом "length".
// 3. Ðоложим len ÑавнÑм ToUint32(lenValue).
var len = O.length >>> 0;
// 4. ÐÑли len Ñавен 0, веÑнÑм -1.
if (len === 0) {
return -1;
}
// 5. ÐÑли бÑл пеÑедан аÑгÑÐ¼ÐµÐ½Ñ fromIndex, положим n ÑавнÑм
// ToInteger(fromIndex); инаÑе положим n ÑавнÑм 0.
var n = +fromIndex || 0;
if (Math.abs(n) === Infinity) {
n = 0;
}
// 6. ÐÑли n >= len, веÑнÑм -1.
if (n >= len) {
return -1;
}
// 7. ÐÑли n >= 0, положим k ÑавнÑм n.
// 8. ÐнаÑе, n<0, положим k ÑавнÑм len - abs(n).
// ÐÑли k менÑÑе нÑÐ»Ñ 0, положим k ÑавнÑм 0.
k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
// 9. Ðока k < len, бÑдем повÑоÑÑÑÑ
while (k < len) {
// a. Ðоложим Pk ÑавнÑм ToString(k).
// ÐÑо неÑвное пÑеобÑазование Ð´Ð»Ñ Ð»ÐµÐ²Ð¾ÑÑоÑоннего опеÑанда в опеÑаÑоÑе in
// b. Ðоложим kPresent ÑавнÑм ÑезÑлÑÑаÑÑ Ð²Ñзова внÑÑÑеннего меÑода
// HasProperty обÑекÑа O Ñ Ð°ÑгÑменÑом Pk.
// ÐÑÐ¾Ñ Ñаг Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð±ÑединÑн Ñ Ñагом c
// c. ÐÑли kPresent Ñавен true, вÑполним
// i. Ðоложим elementK ÑавнÑм ÑезÑлÑÑаÑÑ Ð²Ñзова внÑÑÑеннего меÑода Get
// обÑекÑа O Ñ Ð°ÑгÑменÑом ToString(k).
// ii. Ðоложим same ÑавнÑм ÑезÑлÑÑаÑÑ Ð¿ÑименениÑ
// ÐлгоÑиÑма ÑÑÑогого ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð½Ð° ÑавенÑÑво междÑ
// searchElement и elementK.
// iii. ÐÑли same Ñавен true, веÑнÑм k.
if (k in O && O[k] === searchElement) {
return k;
}
k++;
}
return -1;
};
}
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
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