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

基于匹配值从两个数组创建(多维)数组的实现方法

基于日期匹配生成目标数组的实现方案

我明白你现在卡在怎么把这两个数组按日期匹配生成目标数组上了,别担心,我来给你一步步拆解实现思路和代码示例。

首先先明确我们的目标:遍历date数组里的每个日期,找到所有在该日期有可用时段的人员信息,最终生成一个每个日期对应其可用人员列表的目标数组。

实现步骤

  • 第一步:先把people数组转换成日期为键、对应人员可用信息为值的映射对象,这样后续查找时不用反复遍历整个people数组,效率更高。
  • 第二步:遍历date数组,针对每个日期从映射对象中取出对应的人员信息,组合成目标数组的元素。

具体代码示例

// 你的原始数据
let date = [1522303200000, 1522389600000, 1522476000000];
let people = [ 
  { 
    "id": 0, 
    "name": "Sophia Mason", 
    "biography": "Lorem ...", 
    "availability": [ 
      { "date": 1522303200000, "times": ["9:00 am", "2:30 pm", "5:00 pm", "6:00 pm"] }, 
      { "date": 1522389600000, "times": ["9:00 am", "2:30 pm", "5:00 pm", "6:00 pm"] }, 
      { "date": 1522476000000, "times": ["9:00 am", "3:00 pm"] }
    ] 
  },
  // 可以添加更多人员数据
];

// 1. 构建日期到人员可用信息的映射
const dateToPeopleMap = people.reduce((map, person) => {
  // 遍历当前人员的所有可用日期
  person.availability.forEach(availItem => {
    // 如果映射里还没有这个日期的条目,先初始化空数组
    if (!map[availItem.date]) {
      map[availItem.date] = [];
    }
    // 把当前人员的关键信息(id、name、该日期的可用时段)加入对应日期的列表
    map[availItem.date].push({
      id: person.id,
      name: person.name,
      availableTimes: availItem.times
    });
  });
  return map;
}, {});

// 2. 遍历date数组生成目标数组
const targetArray = date.map(currentDate => ({
  date: currentDate,
  availablePersons: dateToPeopleMap[currentDate] || [] 
  // 处理边界情况:如果该日期没有任何人可用,返回空数组避免报错
}));

// 打印结果看看
console.log(targetArray);

代码解释

  • reduce方法用来遍历people数组,把每个人员的availability里的日期和对应信息整理到映射对象中,这样后续查找日期对应的人员时是O(1)的时间复杂度。
  • map方法遍历date数组的每个日期,从映射中取出对应的人员列表,如果该日期没有人员可用,就用空数组兜底,保证目标数组的结构一致性。

示例输出结构

生成的targetArray大概会是这样的结构:

[
  {
    "date": 1522303200000,
    "availablePersons": [
      {
        "id": 0,
        "name": "Sophia Mason",
        "availableTimes": ["9:00 am", "2:30 pm", "5:00 pm", "6:00 pm"]
      }
      // 其他该日期有可用时段的人员
    ]
  },
  // 其他日期的条目...
]

如果你的目标数组结构有特殊要求,比如需要只保留时段或者其他字段,只需要调整push里的字段或者map的返回结构就可以啦。

内容的提问来源于stack exchange,提问作者T. Evans

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:04:30