--- title: Array.prototype.indexOf() slug: Web/JavaScript/Reference/Global_Objects/Array/indexOf tags: - Dokumentacja_JavaScript - Dokumentacje - JavaScript - Wszystkie_kategorie translation_of: Web/JavaScript/Reference/Global_Objects/Array/indexOf original_slug: Web/JavaScript/Referencje/Obiekty/Array/indexOf ---
Zwraca pierwszy (najmniejszy) indeks elementu w tablicy równego podanej wartości lub -1, gdy nie znaleziono takiego elementu.
array.indexOf(searchElement[, fromIndex = 0]);
searchElement
fromIndex
indexOf
porównuje searchElement
z elementami tablicy używając ścisłego porównania (podobnie jak w przypadku operatora ===).
indexOf
jest rozszerzeniem JavaScript dla standardu ECMA-262, więc może nie być obecny w innych implementacjach tego standardu. Można to obejść, dopisując poniższy kod na początku skryptu, zezwalający na użycie indexOf
w implementacji ECMA-262, które nie wspierają tego natywnie.
if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt /*, from*/) { var len = this.length; var from = Number(arguments[1]) || 0; from = (from < 0) ? Math.ceil(from) : Math.floor(from); if (from < 0) from += len; for (; from < len; from++) { if (from in this && this[from] === elt) return from; } return -1; }; }
Należy zwrócić uwagę, że ta implementacja ma na celu całkowitą zgodność z indexOf
występującą w Firefoksie i silniku JavaScript SpiderMonkey, włączając w to przypadki w których przesyłany do indexOf
indeks nie jest wartością liczbową. Jeśli masz zamiar wykorzystać przytoczone rozwiązanie w rzeczywistych aplikacjach, możesz nie potrzebować całego powyższego kodu (części odpowiedzialnej za obliczenie wartości from
).
indexOf
Następujący przykład stosuje indexOf
do znalezienia pierwszego wystąpienia elementów.
array = [2, 5, 9]; index = array.indexOf(2); // index jest 0 index = array.indexOf(7); // index jest -1
Poniższy przykład używa indexOf
do znalezienia wszystkich wystąpień elementu w tablicy oraz dodaje ich indeksy do drugiej tablicy używając metody {{jsxref("Array.prototype.push()")}}.
indices = []; idx = array.indexOf(element) while (idx != -1) { indices.push(idx); idx = array.indexOf(element, idx + 1); }