Maison >interface Web >js tutoriel >Comment filtrer efficacement les objets de tableau par valeur de propriété en JavaScript ?
Filtrer les objets d'un tableau par valeur de propriété
Pour supprimer efficacement des objets d'un tableau en fonction d'une propriété spécifique, envisagez les solutions suivantes :
1. Filtrage sur place :
Pour décrémenter correctement la longueur du tableau, implémentez la décrémentation i après avoir supprimé un élément :
<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. Écrasement des éléments :
Écrasez les éléments que vous souhaitez conserver pour éviter les suppressions linéaires :
<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. Optimisation des jeux de hachage :
Pour les environnements d'exécution modernes, utilisez un jeu de hachage pour accélérer les recherches :
<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. Fonction réutilisable (facultatif) :
Enveloppez l'opération de filtrage dans une fonction réutilisable :
<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>
Ces solutions filtrent et suppriment efficacement les objets du tableau en fonction de leurs valeurs de propriété spécifiées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!