Sortiertes Array - Letzter Einfügeindex

Beginner

This tutorial is from open-source community. Access the source code

Einführung

In diesem Lab werden wir das Konzept des Findens des letzten Einfügeindex in einem sortierten Array basierend auf einer bereitgestellten Iterationsfunktion mit JavaScript erkunden. Das Lab wird behandeln, wie man überprüft, ob ein Array in absteigender Reihenfolge sortiert ist, wie man eine Iterationsfunktion auf alle Elemente eines Arrays anwendet und wie man den passenden letzten Index findet, an dem ein Element eingefügt werden sollte, basierend auf der bereitgestellten Iterationsfunktion. Am Ende des Labs werdet ihr ein besseres Verständnis dafür haben, wie man Arrays in JavaScript manipuliert und Iterationsfunktionen verwendet.

Wie man den letzten Einfügeindex in einem sortierten Array basierend auf einer Funktion findet

Um zu beginnen, öffnen Sie das Terminal/SSH und geben Sie node ein.

Hier ist, wie man den höchsten Index findet, an dem ein Wert in ein Array eingefügt werden sollte, um seine Sortierreihenfolge beizubehalten, basierend auf einer bereitgestellten Iterationsfunktion:

  1. Überprüfen Sie, ob das Array in absteigender Reihenfolge sortiert ist.
  2. Verwenden Sie Array.prototype.map(), um die Iterationsfunktion auf alle Elemente des Arrays anzuwenden.
  3. Verwenden Sie Array.prototype.reverse() und Array.prototype.findIndex(), um den passenden letzten Index zu finden, an dem das Element eingefügt werden sollte, basierend auf der bereitgestellten Iterationsfunktion.

Siehe den folgenden Code:

const sortedLastIndexBy = (arr, n, fn) => {
  const isDescending = fn(arr[0]) > fn(arr[arr.length - 1]);
  const val = fn(n);
  const index = arr
    .map(fn)
    .reverse()
    .findIndex((el) => (isDescending ? val <= el : val >= el));
  return index === -1 ? 0 : arr.length - index;
};

Hier ist ein Beispiel:

sortedLastIndexBy([{ x: 4 }, { x: 5 }], { x: 4 }, (o) => o.x); // 1

Zusammenfassung

Herzlichen Glückwunsch! Sie haben das Lab "Letzter Einfügeindex in sortiertem Array basierend auf Funktion" abgeschlossen. Sie können in LabEx weitere Labs absolvieren, um Ihre Fähigkeiten zu verbessern.