Array.prototype.indexOf()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Die indexOf() Methode von Array Instanzen gibt den ersten Index zurück, an dem ein bestimmtes Element im Array gefunden werden kann, oder -1, wenn es nicht vorhanden ist.

Probieren Sie es aus

Syntax

js
indexOf(searchElement)
indexOf(searchElement, fromIndex)

Parameter

searchElement

Element, das im Array gefunden werden soll.

fromIndex Optional

Nullbasierter Index, bei dem die Suche beginnen soll, konvertiert zu einer ganzen Zahl.

  • Ein negativer Index zählt vom Ende des Arrays zurück — wenn -array.length <= fromIndex < 0, wird fromIndex + array.length verwendet. Beachten Sie, dass das Array in diesem Fall dennoch von vorne nach hinten durchsucht wird.
  • Wenn fromIndex < -array.length oder fromIndex weggelassen wird, wird 0 verwendet, wodurch das gesamte Array durchsucht wird.
  • Wenn fromIndex >= array.length, wird das Array nicht durchsucht und -1 zurückgegeben.

Rückgabewert

Der erste Index von searchElement im Array; -1, wenn nicht gefunden.

Beschreibung

Die indexOf() Methode vergleicht searchElement mit den Elementen des Arrays unter Verwendung der strikten Gleichheit (dem gleichen Algorithmus, der vom === Operator verwendet wird). NaN Werte werden nie als gleich verglichen, daher gibt indexOf() immer -1 zurück, wenn searchElement NaN ist.

Die indexOf() Methode überspringt leere Stellen in sparse arrays.

Die indexOf() Methode ist generisch. Sie erwartet nur, dass der this Wert eine length Eigenschaft und integer-basierte Schlüsselwerteigenschaften hat.

Beispiele

Verwendung von indexOf()

Im folgenden Beispiel wird indexOf() verwendet, um Werte in einem Array zu lokalisieren.

js
const array = [2, 9, 9];
array.indexOf(2); // 0
array.indexOf(7); // -1
array.indexOf(9, 2); // 2
array.indexOf(2, -1); // -1
array.indexOf(2, -3); // 0

Sie können indexOf() nicht verwenden, um nach NaN zu suchen.

js
const array = [NaN];
array.indexOf(NaN); // -1

Finden aller Vorkommen eines Elements

js
const indices = [];
const array = ["a", "b", "a", "c", "a", "d"];
const element = "a";
let idx = array.indexOf(element);
while (idx !== -1) {
  indices.push(idx);
  idx = array.indexOf(element, idx + 1);
}
console.log(indices);
// [0, 2, 4]

Überprüfen, ob ein Element im Array existiert oder nicht und Aktualisieren des Arrays

js
function updateVegetablesCollection(veggies, veggie) {
  if (veggies.indexOf(veggie) === -1) {
    veggies.push(veggie);
    console.log(`New veggies collection is: ${veggies}`);
  } else {
    console.log(`${veggie} already exists in the veggies collection.`);
  }
}

const veggies = ["potato", "tomato", "chillies", "green-pepper"];

updateVegetablesCollection(veggies, "spinach");
// New veggies collection is: potato,tomato,chillies,green-pepper,spinach
updateVegetablesCollection(veggies, "spinach");
// spinach already exists in the veggies collection.

Verwendung von indexOf() bei sparse arrays

Sie können indexOf() nicht verwenden, um nach leeren Stellen in sparse arrays zu suchen.

js
console.log([1, , 3].indexOf(undefined)); // -1

Aufruf von indexOf() bei Nicht-Array-Objekten

Die indexOf() Methode liest die length Eigenschaft von this und greift dann auf jede Eigenschaft zu, deren Schlüssel eine nicht-negative ganze Zahl kleiner als length ist.

js
const arrayLike = {
  length: 3,
  0: 2,
  1: 3,
  2: 4,
  3: 5, // ignored by indexOf() since length is 3
};
console.log(Array.prototype.indexOf.call(arrayLike, 2));
// 0
console.log(Array.prototype.indexOf.call(arrayLike, 5));
// -1

Spezifikationen

Specification
ECMAScript Language Specification
# sec-array.prototype.indexof

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch