MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

Die lastIndexOf() Methode gibt den letzten Index zurück, an dem das übergebene Element gefunden wurde, oder -1, wenn es nicht vorhanden ist. Das Feld wird rückwarts durchsucht und der Suchlauf startet bei fromIndex.

var numbers = [2, 5, 9, 2];
numbers.lastIndexOf(2); // 3
numbers.lastIndexOf(7); // -1

Syntax

arr.lastIndexOf(searchElement)
arr.lastIndexOf(searchElement, fromIndex)

Parameter

searchElement
Element, nach dem im Feld gesucht werden soll.
fromIndex Optional
Der Index an dem die Suche rückwärts begonnen werden soll. Der Standard  entspricht der Feldlänge - 1 (arr.length - 1), d.h. das gesamte Feld wird durchsucht. Wenn der Index größer oder gleich der Länge des Feldes ist, wird das gesamte Feld durchsucht. Ist der angegebene Index eine negative Zahl, wird er als Versatz zum Ende des Feldes angenommen. Anmerkung: Bei Verwendung eines negativen Index wird das Feld dennoch von hinten nach vorne durchsucht. Wenn der errechnete Index kleiner als 0 ist, wird -1 zurückgegeben, d.h. das Feld wird nicht durchsucht.

Rückgabewert

Der letzte Index des gesuchten Elementes aus dem Feld. -1 wenn keins gefunden wurde.

Beschreibung

lastIndexOf vergleicht das searchElement mit den Elementen des Feldes und verwendet hierzu die strike Gleicheit (Die gleiche Methode, die beim === - Operator  (triple-equals) angewendet wird.

Beispiele

lastIndexOf verwenden

Das folgende Beispiel verwendet lastIndexOf, um Werte in einem Feld zu lokalisieren.

var numbers = [2, 5, 9, 2];
numbers.lastIndexOf(2);     // 3
numbers.lastIndexOf(7);     // -1
numbers.lastIndexOf(2, 3);  // 3
numbers.lastIndexOf(2, 2);  // 0
numbers.lastIndexOf(2, -2); // 0
numbers.lastIndexOf(2, -1); // 3

Finde jedes Vorkommen eines Elementes

Das folgende Beispiel benutzt lastIndexOf, um alle Indizes eines Elementes in einem gegebenen Feld zu finden, wobei sie mit Hilfe von push zu einem anderen Feld hinzugefügt werden, sobald sie gefunden werden.

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]

Anmerkung: Der Fall idx == 0 muss hier seperat behandelt werden, weil das Element immer gefunden wird unabhängig vom fromIndex Parameter, falls es das erste Element im Feld ist. Das ist der Unterschieder zur indexOf Methode.

Polyfill

lastIndexOf wurde dem ECMA-262-Standard in der fünften Edition hinzugefügt;  sie könnte daher nicht in allen Browsern verfügbar sein. Der Fehler kann umgangen werden, indem der folgende Code zu Beginn eines Skriptes eingesetzt wird. Dies ermöglicht die Verwendung von lastIndexOf, auch wenn die Methode nativ nicht unterstützt wird. Dieser Algorithmus stimmt mit dem überein, was in ECMA-262 der 5. Edition, spezifiziert wurde, unter der Annahme, dass Object, TypeError, Number, Math.floor, Math.abs, und Math.min ihre originalen Werte haben.

// Production steps of ECMA-262, Edition 5, 15.4.4.15
// Reference: http://es5.github.io/#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;
  };
}

Erneute Anmerkung: Diese Implementation zielt auf eine absolute Kompatibilität von lastIndexOf mit Firefox und der SpiderMonkey JavaScript Engine aus, inklusive einigen Fällen, welche wohl Grenzfälle sind. Beim Vorhaben diese Funktion in eigenen Applikationen zu verwenden, ist eine Berechnung von from mit weniger komplizierten Code möglich, wenn diese Fälle ignoriert werden.

Spezifikationen

Specification Status Kommentar
ECMAScript 5.1 (ECMA-262)
Die Definition von 'Array.prototype.lastIndexOf' in dieser Spezifikation.
Standard Ursprüngliche Definition. Hinzugefügt in JavaScript 1.6.
ECMAScript 2015 (6th Edition, ECMA-262)
Die Definition von 'Array.prototype.lastIndexOf' in dieser Spezifikation.
Standard  
ECMAScript Latest Draft (ECMA-262)
Die Definition von 'Array.prototype.lastIndexOf' in dieser Spezifikation.
Entwurf  

Browser-Kompatibilität

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Ja) (Ja) (Ja) 9 (Ja) (Ja)
Feature Android Chrome for Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Ja) (Ja) (Ja) (Ja)

8.1 (Ja)

(Ja) (Ja)

Kompatibilitätsanmerkungen

  • Beginnend mit Firefox 47 (Firefox 47 / Thunderbird 47 / SeaMonkey 2.44), gibt diese Methode nicht mehr -0 zurück. Zum Beispiel wird [0].lastIndexOf(0, -0) immer +0 zurückgeben (Bug 1242043).

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

 Mitwirkende an dieser Seite: Arlind
 Zuletzt aktualisiert von: Arlind,