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
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), []);
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});
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 }
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!