Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie filtere ich Array-Objekte effizient nach Eigenschaftswert in JavaScript?

Barbara Streisand
Freigeben: 2024-10-29 14:45:02
Original
1068 Leute haben es durchsucht

How to Efficiently Filter Array Objects by Property Value in JavaScript?

Array-Objekte nach Eigenschaftswert filtern

Um Objekte basierend auf einer bestimmten Eigenschaft effizient aus einem Array zu entfernen, ziehen Sie die folgenden Lösungen in Betracht:

1. In-Place-Filterung:

Um die Array-Länge korrekt zu verringern, implementieren Sie die Dekrementierung von i nach dem Entfernen eines Elements:

<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

2. Elemente überschreiben:

Elemente überschreiben, die Sie behalten möchten, um lineare Löschvorgänge zu vermeiden:

<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

3. Hash-Set-Optimierung:

Verwenden Sie für moderne Laufzeiten einen Hash-Set, um Suchvorgänge zu beschleunigen:

<code class="javascript">const setToDelete = new Set(listToDelete);
let end = 0;

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

    if (setToDelete.has(obj.id)) {
        arrayOfObjects[end++] = obj;
    }
}

arrayOfObjects.length = end;
Nach dem Login kopieren

4. Wiederverwendbare Funktion (optional):

Verpacken Sie den Filtervorgang in einer wiederverwendbaren Funktion:

<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;
};

const toDelete = new Set(['abc', 'efg']);

const arrayOfObjects = [{id: 'abc', name: 'oh'},
                        {id: 'efg', name: 'em'},
                        {id: 'hij', name: 'ge'}];

filterInPlace(arrayOfObjects, obj => !toDelete.has(obj.id));
console.log(arrayOfObjects); // [{id: 'hij', name: 'ge'}]</code>
Nach dem Login kopieren

Diese Lösungen filtern und entfernen Objekte effizient aus dem Array basierend auf ihren angegebenen Eigenschaftswerten.

Das obige ist der detaillierte Inhalt vonWie filtere ich Array-Objekte effizient nach Eigenschaftswert in JavaScript?. 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