You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现两个MySQL查询结果数组的全量对象匹配组合?

实现两个数组对象的笛卡尔积组合

你需要的是两个数组的笛卡尔积——让array_1里的每个studentID对象,和array_2里的每个pacesetterID对象逐一组合。之前用forEach没得到正确结果,大概率是嵌套循环的逻辑没写对,下面是两种可靠的实现方式:

方式一:嵌套forEach循环(基础写法)

通过两层嵌套遍历,外层处理每个学生对象,内层遍历所有领航员对象,每次合并两个对象的属性后推入结果数组:

const array_1 = [{studentID: "138"}, {studentID: "151"}];
const array_2 = [{pacesetterID: "218"}, {pacesetterID: "219"}, {pacesetterID: "221"}, {pacesetterID: "220"}, {pacesetterID: "222"}];

const result = [];

// 外层遍历每个学生
array_1.forEach(student => {
  // 内层遍历每个领航员,和当前学生组合
  array_2.forEach(pacesetter => {
    result.push({
      ...student,
      ...pacesetter
    });
  });
});

console.log(result);

方式二:ES6 flatMap + map(简洁写法)

利用flatMap扁平化嵌套数组的特性,配合map生成组合对象,一行代码完成:

const array_1 = [{studentID: "138"}, {studentID: "151"}];
const array_2 = [{pacesetterID: "218"}, {pacesetterID: "219"}, {pacesetterID: "221"}, {pacesetterID: "220"}, {pacesetterID: "222"}];

const result = array_1.flatMap(student => 
  array_2.map(pacesetter => ({...student, ...pacesetter}))
);

console.log(result);

两种方式都会生成符合你需求的结果:每个studentID都会和所有pacesetterID配对,最终数组长度是两个原数组长度的乘积(比如2*5=10个对象)。你示例结果里的{pacesetterID: "221"}应该是笔误,上述代码会自动补全对应的studentID。

内容的提问来源于stack exchange,提问作者Synaptic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 11:45:29