Maison >interface Web >js tutoriel >Comment trouver des éléments correspondants dans plusieurs tableaux JavaScript ?

Comment trouver des éléments correspondants dans plusieurs tableaux JavaScript ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-24 18:45:09891parcourir

How to Find Matching Elements Across Multiple JavaScript Arrays?

Correspondance d'éléments dans plusieurs tableaux JavaScript

Problème

Étant donné plusieurs tableaux JavaScript de valeurs de chaîne, recherchez les éléments qui apparaissent de manière identique dans tous les tableaux. Par exemple :

<code class="javascript">var arr1 = ['apple', 'orange', 'banana', 'pear', 'fish', 'pancake', 'taco', 'pizza'];
var arr2 = ['taco', 'fish', 'apple', 'pizza'];
var arr3 = ['banana', 'pizza', 'fish', 'apple'];</code>

Résultat attendu :

<code class="javascript">['apple', 'fish', 'pizza']</code>

Solution

Pour trouver les éléments correspondants, nous pouvons utiliser une combinaison de méthodes Array :

<code class="javascript">const arrays = [arr1, arr2, arr3];
const result = arrays.shift().filter((v) => {
  return arrays.every((a) => {
    return a.indexOf(v) !== -1;
  });
});</code>

Étapes :

  1. Utilisez arrays.shift() pour supprimer le premier tableau de la liste d'origine.
  2. Utilisez .filter() sur le premier tableau à parcourir chaque élément v.
  3. Utilisez .every() sur le reste des tableaux pour vérifier si chacun contient l'élément v actuel.
  4. Si l'élément v est présent dans chaque tableau, incluez-le dans le tableau de résultats.

En appliquant cette logique de manière itérative à chaque tableau, nous pouvons effectivement trouver les éléments qui apparaissent de manière identique dans tous les tableaux fournis.

Considérations supplémentaires

Gestion des éléments en double :

La solution fournie suppose que les tableaux ne contiennent pas d'éléments en double. Si tel est le cas, vous pouvez modifier le code comme suit :

<code class="javascript">const result = arrays.shift().reduce((res, v) => {
  if (res.indexOf(v) === -1 &amp;&amp; arrays.every((a) => {
    return a.indexOf(v) !== -1;
  })) res.push(v);
  return res;
}, []);</code>

Ce code utilise .reduce() au lieu de .filter(). Il vérifie les doublons dans le tableau de résultats et ajoute uniquement des éléments uniques présents dans chaque tableau.

Nombre arbitraire de tableaux :

La solution est conçue pour fonctionner avec un nombre inconnu de tableaux. En utilisant arrays.shift(), nous pouvons comparer séquentiellement le premier tableau aux tableaux restants jusqu'à ce que tous les tableaux aient été traités.

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