Maison >interface Web >js tutoriel >Comment rechercher des correspondances dans des tableaux sur plusieurs tableaux en Javascript ?

Comment rechercher des correspondances dans des tableaux sur plusieurs tableaux en Javascript ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-31 01:58:29815parcourir

How to Find Matches in Arrays Across Multiple Arrays in Javascript?

Recherche de correspondances dans des tableaux sur différents tableaux

Considérons un scénario dans lequel vous disposez de plusieurs tableaux JavaScript avec des valeurs de chaîne et vous devez trouver et extrayez uniquement les correspondances identiques dans chaque tableau.

Imaginez que vous ayez les tableaux suivants :

var arr1 = ['apple', 'orange', 'banana', 'pear', 'fish', 'pancake', 'taco', 'pizza'];
var arr2 = ['taco', 'fish', 'apple', 'pizza'];
var arr3 = ['banana', 'pizza', 'fish', 'apple'];

Votre objectif est d'obtenir un tableau contenant uniquement les correspondances qui apparaissent dans les trois tableaux, qui seraient :

['apple', 'fish', 'pizza']

Cette tâche peut être accomplie sans utiliser de bibliothèques externes. Une approche consiste à utiliser la méthode filter() en combinaison avec every().

var result = arrays.shift().filter(function(v) {
    return arrays.every(function(a) {
        return a.indexOf(v) !== -1;
    });
});

Dans cette solution :

  • shift() supprime le premier tableau de la collection arrays.
  • filter() crée un nouveau tableau contenant uniquement les éléments qui passent un condition spécifiée.
  • every() vérifie si tous les éléments de la collection arrays satisfont à une condition.

Tri du tableau externe ( tableaux) basés sur la longueur peuvent optimiser les performances.

arrays.sort(function(a, b) {
    return a.length - b.length;
});

De plus, si des doublons sont présents dans les tableaux, vous pouvez utiliser la méthode reduce() au lieu de filter().

var result = arrays.shift().reduce(function(res, v) {
    if (res.indexOf(v) === -1 && arrays.every(function(a) {
        return a.indexOf(v) !== -1;
    })) res.push(v);
    return res;
}, []);

En utilisant ces méthodes, vous pouvez efficacement trouver des correspondances dans des tableaux sur plusieurs tableaux, même s'ils contiennent des longueurs inconnues ou des doublons.

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