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

为JSON对象补充详情:JavaScript函数与Promise的实现

解决方案:为Company对象附加员工详情

我来帮你搞定这个需求!咱们要做的就是把Company里仅存ID的员工列表,通过Util工具函数拉取到有效详情后,只把有对应详情的员工信息整合到Company对象里。下面是完整的实现步骤和代码:

1. 明确数据结构与工具函数(模拟示例)

先定义好示例的Company对象和Util工具函数(你可以直接替换成项目里的真实结构):

// 模拟的Company对象,仅存储员工ID列表
const company = {
  name: "Global Tech Inc.",
  employeeIds: [1001, 1002, 1003, 1004]
};

// 模拟的Util工具函数,接收ID列表返回对应员工详情(部分ID可能无匹配详情)
const Util = {
  getEmployeeDetails: (empIds) => {
    // 模拟接口返回:1001、1002、1004有详情,1003无详情
    return [
      { id: 1001, name: "Sarah Connor", role: "Software Engineer" },
      { id: 1002, name: "John Doe", role: "UX Designer" },
      { id: 1004, name: "Linda Park", role: "Product Manager" }
    ];
  }
};

2. 编写核心处理函数

这个函数会接收Company对象,调用Util获取详情后,只保留有有效详情的员工信息:

function attachEmployeeDetails(company) {
  // 调用Util获取所有匹配的员工详情
  const employeeDetails = Util.getEmployeeDetails(company.employeeIds);
  
  // 遍历原ID列表,匹配详情并过滤无详情的项
  const employeesWithValidDetails = company.employeeIds
    .map(empId => {
      // 找到当前ID对应的详情
      const matchedDetail = employeeDetails.find(detail => detail.id === empId);
      // 只有详情存在时才返回整合后的对象,否则返回null
      return matchedDetail ? { ...matchedDetail } : null;
    })
    // 过滤掉没有详情的null项
    .filter(employee => employee !== null);
  
  // 返回更新后的Company对象(不修改原对象,保持纯函数特性)
  return {
    ...company,
    employees: employeesWithValidDetails
  };
}

3. 测试函数并展示结果

用你提供的write和newParagraph函数验证结果:

// 调用处理函数
const updatedCompany = attachEmployeeDetails(company);

// 输出结果
write("原Company对象:");
write(JSON.stringify(company));
newParagraph();
write("更新后的Company对象(仅含有效详情的员工):");
write(JSON.stringify(updatedCompany));

代码说明

  • 用扩展运算符(...)复制原对象和详情,避免直接修改原数据,保证函数的纯性。
  • map遍历每个员工ID,通过find匹配对应详情,不存在则返回null。
  • filter把null项过滤掉,最终只保留有有效详情的员工信息。
  • 完全符合ES6+语法,和你标注的//jshint esnext:true兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:29:29