Maison > base de données > tutoriel mysql > Comment effectuer une JOIN de type SQL sur deux tableaux JavaScript ?

Comment effectuer une JOIN de type SQL sur deux tableaux JavaScript ?

DDD
Libérer: 2024-12-29 04:57:11
original
667 Les gens l'ont consulté

How to Perform an SQL-like JOIN on Two JavaScript Arrays?

Comment combiner deux tableaux JavaScript basés sur une clé commune, similaire à une JOINTURE SQL

Lorsque vous traitez des données en JavaScript, vous pouvez rencontrez des situations dans lesquelles vous disposez de plusieurs tableaux contenant des informations associées et que vous souhaitez les combiner en fonction d'un attribut commun. Dans ce contexte, une opération SQL JOIN peut être utile pour fusionner des données de plusieurs tables, et nous pouvons obtenir une fonctionnalité similaire en JavaScript en utilisant des techniques de manipulation de tableaux.

Disons que nous avons deux tableaux : userProfiles et questions. userProfiles contient des objets avec les propriétés id et name, tandis que les questions contiennent des objets avec les propriétés id, text etcreatedBy. La propriété CreateBy dans questions correspond à la valeur id dans userProfiles.

Notre objectif est de "rejoindre" ces tableaux pour créer un nouveau tableau contenant des objets avec les propriétés id, text et name. En SQL, cette opération serait représentée par la requête suivante :

SELECT u.id, q.text, u.name
FROM userProfiles u
JOIN questions q ON q.createdBy=u.id
Copier après la connexion

En JavaScript, nous pouvons implémenter une jointure en utilisant les méthodes réduire() et concat(). Voici un exemple utilisant la fonction innerJoin :

const innerJoin = (xs, ys, sel) =>
    xs.reduce((zs, x) =>
    ys.reduce((zs, y) =>        // cartesian product - all combinations
    zs.concat(sel(x, y) || []), // filter out the rows and columns you want
    zs), []);
Copier après la connexion

En utilisant cette fonction, nous pouvons effectuer la jointure comme suit :

const result = innerJoin(userProfiles, questions,
    ({id: uid, name}, {id, text, createdBy}) =>
        createdBy === uid && {id, text, name});
Copier après la connexion

Cette fonction innerJoin effectue essentiellement un produit cartésien des deux tableaux , et pour chaque paire d'objets, il vérifie si la propriété CreateBy dans les questions correspond à la propriété id dans userProfiles. S'ils correspondent, il renvoie un objet avec les propriétés souhaitées.

Le tableau de résultats résultant contiendra des objets au format suivant :

{ id, text, name }
Copier après la connexion

Cette approche vous permet de combiner les données de plusieurs tableaux basé sur une clé commune, similaire à une opération SQL JOIN. En tirant parti des capacités de manipulation de tableaux de JavaScript, vous pouvez réaliser des transformations de données efficaces et flexibles pour vos applications.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal