Maison >base de données >tutoriel mysql >Comment puis-je effectuer une jointure interne de style SQL sur deux tableaux JavaScript ?

Comment puis-je effectuer une jointure interne de style SQL sur deux tableaux JavaScript ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-30 13:55:11159parcourir

How Can I Perform an SQL-Style Inner Join on Two JavaScript Arrays?

Joindre des tableaux JavaScript avec une syntaxe de type SQL

Problème :

Vous avez deux JavaScript tableaux : l’un contenant des profils d’utilisateurs et l’autre contenant des questions. Le tableau de profils utilisateur est constitué d'objets avec des clés d'identification et de nom, tandis que le tableau de questions est constitué d'objets avec des clés d'identification, de texte et de créationBy. La clé créée par dans les questions correspond toujours à une valeur d'identifiant dans les profils utilisateur.

Votre objectif est de "rejoindre" ces tableaux de la même manière que pour joindre des tables dans une base de données, en créant un nouveau tableau contenant des objets avec un identifiant, texte et clés de nom.

Solution :

JavaScript fournit une méthode efficace pour effectuer des jointures internes sur tableaux en suivant les étapes suivantes :

  1. Définir une fonction de jointure interne :

    Créez une fonction appelée innerJoin qui prend trois paramètres : deux tableaux à joint, xs et ys, et une fonction de sélection sel qui spécifie les propriétés à inclure dans le joint. array.

  2. Réduction du produit cartésien :

    Utilisez réduire pour parcourir chaque élément de xs et, pour chaque élément, parcourir chaque élément de oui. Cela crée effectivement un produit cartésien des deux tableaux.

  3. Filtrer et sélectionner :

    À l'intérieur de la boucle imbriquée, appliquez la fonction de sélection sel à chaque paire d'éléments. La fonction de sélection doit renvoyer un nouvel objet avec les propriétés souhaitées. Si la fonction de sélection renvoie une valeur fausse, la paire est ignorée.

  4. Concaténer les résultats :

    La fonction innerJoin renvoie un tableau qui est le résultat de la concaténation de tous les objets renvoyés par le sélecteur fonction.

Mise en œuvre :

Voici une démonstration utilisant les ensembles de données suivants :

const userProfiles = [
  {id: 1, name: "Ashok"},
  {id: 2, name: "Amit"},
  {id: 3, name: "Rajeev"},
];

const questions = [
  {id: 1, text: "text1", createdBy: 2},
  {id: 2, text: "text2", createdBy: 2},
  {id: 3, text: "text3", createdBy: 1},
  {id: 4, text: "text4", createdBy: 2},
  {id: 5, text: "text5", createdBy: 3},
  {id: 6, text: "text6", createdBy: 3},
];
const result = innerJoin(userProfiles, questions,
  ({id: uid, name}, {id, text, createdBy}) =>
    createdBy === uid && {id, text, name});

Sortie :

console.log(result);
// Outputs:
[
  {id: 1, text: "text3", name: "Ashok"},
  {id: 2, text: "text1", name: "Amit"},
  {id: 2, text: "text2", name: "Amit"},
  {id: 2, text: "text4", name: "Amit"},
  {id: 3, text: "text5", name: "Rajeev"},
  {id: 3, text: "text6", name: "Rajeev"},
]

Cette sortie démontre que le La fonction innerJoin a réussi à joindre les deux tableaux, en sélectionnant les propriétés id, text et name.

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