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

Node.js 如何将包含多employeeId、projectId的单对象拆分为配对对象集合

实现方案

你需要对employeeId和projectId两个数组做笛卡尔积全配对,复用其他公共字段生成新对象即可,Node.js环境下可以直接用如下原生JS实现:

function splitRecord(record) {
  // 提取公共字段,排除需要拆分的两个数组字段
  const { employeeId, projectId, ...commonFields } = record;
  const result = [];
  // 两层循环完成全量配对
  for (const empId of employeeId) {
    for (const projId of projectId) {
      result.push({
        ...commonFields,
        employeeId: [empId],
        projectId: [projId]
      });
    }
  }
  return result;
}

// 测试验证
const record = {
    "date":"2021-09-20",
    "startAt":"10:00",
    "endAt":"16:00",
    "employeeId": [5,2],
    "projectId":[50,48],
    "notes":"blahhh"
}
console.log(splitRecord(record));

说明

  • 先用对象解构拆分要处理的数组字段和固定公共字段,避免重复复制公共属性
  • 代码为纯原生JS实现,不需要引入任何第三方依赖,所有支持ES6+的Node.js版本都可以直接运行
  • 如果你偏好更简洁的写法,可以用flatMap简化代码:
const splitRecord = record => 
  record.employeeId.flatMap(empId => 
    record.projectId.map(projId => ({
      ...(({ employeeId, projectId, ...rest }) => rest)(record),
      employeeId: [empId],
      projectId: [projId]
    }))
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:06:03