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
Libérer: 2024-10-29 14:45:02
original
1105 Les gens l'ont consulté

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--;
    }
}
Copier après la connexion

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;
Copier après la connexion

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;
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal