Maison > interface Web > js tutoriel > Comment supprimer efficacement des objets d'un tableau en fonction d'une valeur de propriété ?

Comment supprimer efficacement des objets d'un tableau en fonction d'une valeur de propriété ?

Patricia Arquette
Libérer: 2024-11-01 12:41:02
original
1030 Les gens l'ont consulté

How to Efficiently Remove Objects from an Array Based on a Property Value?

Supprimer des objets du tableau par propriété d'objet

Pour supprimer des objets d'un tableau en fonction d'une propriété spécifique, utilisez des méthodes JavaScript natives et évitez les problèmes causés par la diminution de la longueur lors de l'épissure opérations.

Tout d'abord, déterminez les objets à supprimer et stockez-les dans une variable, telle que listToDelete. Ensuite, parcourez le tableau d'objets (arrayOfObjects) et vérifiez si la propriété ID de l'objet correspond à un ID dans listToDelete. Si une correspondance est trouvée, utilisez splice pour supprimer l'objet de arrayOfObjects.

Pour résoudre le problème de diminution de la longueur lors des opérations d'épissage, décrémentez la variable i chaque fois qu'un objet est supprimé. Vous pouvez également écrire les éléments à conserver sur le tableau :

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

Pour une recherche efficace dans les environnements d'exécution modernes, utilisez un jeu de hachage :

<code class="javascript">const setToDelete = new Set(listToDelete);
...
if (setToDelete.has(obj.id)) {...}
Copier après la connexion

Enfin, encapsulez la logique dans une fonction réutilisable pour une utilisation pratique :

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

Cette approche supprime efficacement les objets d'un tableau en faisant correspondre leurs valeurs de propriété et garantit des performances optimales en évitant les opérations en temps linéaire.

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