Maison >interface Web >js tutoriel >Comment filtrer efficacement les objets de tableau par valeur de propriété en JavaScript ?

Comment filtrer efficacement les objets de tableau par valeur de propriété en JavaScript ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-29 14:45:021076parcourir

How to Efficiently Filter Array Objects by Property Value in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn