We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

Die lastIndexOf() Methode gibt den letzten Index zurück, an dem ein übergebenes Element im Array gefunden wurde, oder -1, wenn es nicht vorhanden ist. Das Array wird rückwärts durchsucht beginnend beim fromIndex.

Syntax

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

Parameter

searchElement
Element, nach dem im Feld gesucht wird.
fromIndex Optional
Der Index an dem die Suche rückwärts begonnen wird. Der Standardwert ist die Arraylänge minus eins (arr.length - 1), d. h. das gesamte Feld wird durchsucht. Wenn der Index größer oder gleich der Länge des Arrays ist, wird das gesamte Array durchsucht. Ist der Index eine negative Zahl, wird er als Offset vom Ende des Arrays behandelt. Bei Verwendung eines negativen Index wird das Array trotzdem 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 strikte Gleichheit (Die gleiche Methode, die beim === Operator  (triple-equals) angewendet wird.

Beispiele

lastIndexOf verwenden

Das folgende Beispiel verwendet lastIndexOf, um Werte in einem Array zu finden.

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 Array zu finden, wobei sie mit Hilfe von push zu einem anderen Array 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]

Der Fall idx == 0 muss hier separat 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 Umgebung 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

Spezifikation Status Kommentar
ECMAScript 5.1 (ECMA-262)
Die Definition von 'Array.prototype.lastIndexOf' in dieser Spezifikation.
Standard Initiale Definition. Implementiert 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  

Browserkompatibilität

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Grundlegende Unterstützung Ja Ja1.59 Ja Ja
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Grundlegende Unterstützung Ja Ja Ja4 Ja Ja Ja

Kompatibilitätshinweise

  • 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: schlagi123, Arlind
Zuletzt aktualisiert von: schlagi123,