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

如何通过映射对象列表与数组创建新的对象数组?

匹配ID生成新对象数组解决方案

你可以基于Object.entries(obj)的思路继续完成,核心是遍历出勤记录的同时,在学生数组里找到对应ID的对象,再提取需要的属性组合成新对象。

完整实现代码

const arrOfObj = [{ id: "id1", name: "A1", rollno: "1"}, {id: "id2", name: "A2", rollno: "2"}, { id: "id3", name: "A3", rollno: "3"}];
const obj = {"id1": "absent", "id2": "present"};

const newArrOfObj = Object.entries(obj).map(([id, attendance]) => {
  // 根据ID在学生数组中找到匹配的对象
  const student = arrOfObj.find(item => item.id === id);
  // 组合成需要的新对象
  return {
    id: student.id,
    name: student.name,
    attendance: attendance
  };
});

console.log(newArrOfObj);

代码逻辑解释

  1. Object.entries(obj):把出勤对象obj转换成键值对数组[["id1", "absent"], ["id2", "present"]],方便遍历每个出勤记录。
  2. map遍历:对每个键值对用解构语法([id, attendance])直接取出ID和出勤状态。
  3. find匹配学生:在arrOfObj中根据ID找到对应的学生对象。
  4. 生成新对象:只保留需要的id、name和attendance属性,组合成目标结构。

健壮性优化(可选)

如果担心obj中存在arrOfObj里没有的ID,可以加个判断避免报错,同时过滤掉无效记录:

const newArrOfObj = Object.entries(obj)
  .map(([id, attendance]) => {
    const student = arrOfObj.find(item => item.id === id);
    // 仅当找到匹配学生时才返回新对象
    return student ? { id: student.id, name: student.name, attendance } : null;
  })
  // 过滤掉null值
  .filter(item => item !== null);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:25:14