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