Maison >base de données >tutoriel mysql >Comment effectuer une jointure interne sur des tableaux Javascript ?

Comment effectuer une jointure interne sur des tableaux Javascript ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-06 00:45:40944parcourir

How to Perform an Inner Join on Javascript Arrays?

Jointure interne de tableaux Javascript pour la manipulation de données

Énoncé du problème :

Combinaison de deux tableaux Javascript en un seul tableau de résultats basé sur une clé commune, similaire à l'opération JOIN dans SQL.

Étant donné Tableaux :

  • 'userProfiles' : contient des objets avec les propriétés 'id' et 'name'.
  • 'questions' : contient des objets avec 'id', 'text' et ' Propriétés créées par'.

Solution :

Jointure interne Implémentation :

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

Exemple d'ensemble de données :

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

Opération de jointure :

const result = innerJoin(userProfiles, questions,
    ({id: uid, name}, {id, text, createdBy}) =>
        createdBy === uid && {id, text, name});

Sortie de la console :

Open your browser console to see the output.

[
  { id: 1, text: 'text3', name: 'Ashok' },
  { id: 2, text: 'text1', name: 'Amit' },
  { id: 2, text: 'text2', name: 'Amit' },
  { id: 4, text: 'text4', name: 'Amit' },
  { id: 5, text: 'text5', name: 'Rajeev' },
  { id: 6, text: 'text6', name: 'Rajeev' }
]

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