首页 >数据库 >mysql教程 >如何在 Javascript 数组上执行内连接?

如何在 Javascript 数组上执行内连接?

Linda Hamilton
Linda Hamilton原创
2025-01-06 00:45:40927浏览

How to Perform an Inner Join on Javascript Arrays?

用于数据操作的 Javascript 数组的内连接

问题陈述:

基于公共键将两个 Javascript 数组组合成一个结果数组,类似于SQL中的JOIN操作。

给定数组:

  • 'userProfiles':包含具有 'id' 和 'name' 属性的对象。
  • 'questions':包含具有 'id'、'text' 和 ' 属性的对象创建者'属性。

解决方案:

内连接实现:

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

示例数据集:

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});

控制台输出:

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' }
]

以上是如何在 Javascript 数组上执行内连接?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn