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
Libérer: 2024-10-24 18:45:09
original
896 Les gens l'ont consulté

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

Résultat attendu :

<code class="javascript">['apple', 'fish', 'pizza']</code>
Copier après la connexion

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

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

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!

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