Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie entferne ich Objekte basierend auf einem Eigenschaftswert effizient aus einem Array?

Patricia Arquette
Freigeben: 2024-11-01 12:41:02
Original
927 Leute haben es durchsucht

How to Efficiently Remove Objects from an Array Based on a Property Value?

Objekte anhand der Objekteigenschaft aus einem Array entfernen

Um Objekte basierend auf einer bestimmten Eigenschaft aus einem Array zu entfernen, verwenden Sie native JavaScript-Methoden und vermeiden Sie Probleme, die durch eine Verringerung der Länge beim Splice verursacht werden Operationen.

Bestimmen Sie zunächst die zu löschenden Objekte und speichern Sie sie in einer Variablen, z. B. listToDelete. Als nächstes durchlaufen Sie das Array von Objekten (arrayOfObjects) und prüfen, ob die ID-Eigenschaft des Objekts mit einer ID in listToDelete übereinstimmt. Wenn eine Übereinstimmung gefunden wird, verwenden Sie splice, um das Objekt aus arrayOfObjects zu entfernen.

Um das Problem der abnehmenden Länge während Spleißvorgängen zu beheben, dekrementieren Sie die i-Variable jedes Mal, wenn ein Objekt entfernt wird. Alternativ schreiben Sie die zu behaltenden Elemente über das Array:

<code class="javascript">for (var i = 0; i < arrayOfObjects.length; i++) {
  var obj = arrayOfObjects[i];

  if (listToDelete.indexOf(obj.id) !== -1) {
    arrayOfObjects.splice(i, 1);
    i--;
  }
}
Nach dem Login kopieren
<code class="javascript">var end = 0;

for (var i = 0; i < arrayOfObjects.length; i++) {
  var obj = arrayOfObjects[i];

  if (listToDelete.indexOf(obj.id) === -1) {
    arrayOfObjects[end++] = obj;
  }
}

arrayOfObjects.length = end;
Nach dem Login kopieren

Für eine effiziente Suche in modernen Laufzeiten verwenden Sie einen Hash-Satz:

<code class="javascript">const setToDelete = new Set(listToDelete);
...
if (setToDelete.has(obj.id)) {...}
Nach dem Login kopieren

Kapseln Sie abschließend die Logik in einer wiederverwendbaren Funktion zur bequemen Verwendung:

<code class="javascript">const filterInPlace = (array, predicate) => {
  let end = 0;

  for (let i = 0; i < array.length; i++) {
    const obj = array[i];

    if (predicate(obj)) {
      array[end++] = obj;
    }
  }

  array.length = end;
};</code>
Nach dem Login kopieren

Dieser Ansatz entfernt Objekte effektiv aus einem Array, indem ihre Eigenschaftswerte abgeglichen werden, und stellt eine optimale Leistung sicher, indem lineare Zeitoperationen vermieden werden.

Das obige ist der detaillierte Inhalt vonWie entferne ich Objekte basierend auf einem Eigenschaftswert effizient aus einem Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!