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

JavaScript如何根据指定日期值过滤包含嵌套数组的对象数组

嵌套数组日期过滤解决方案

问题根因

你编写的过滤代码未生效,核心原因是appointments和dates均为数组类型,无法直接通过链式访问.dates/.date属性读取数组内对象的字段,且未对内层数组做裁剪处理,无法实现「仅保留匹配日期项」的需求。

可行实现代码

const chosenDate = "2021-09-13";

const filteredBranches = branches
  .map(branch => {
    // 深拷贝分支避免修改原数组,若允许修改原数组可删除该行
    const processedBranch = JSON.parse(JSON.stringify(branch));
    // 处理预约列表,过滤匹配日期
    processedBranch.appointments = processedBranch.appointments
      .map(appointment => {
        // 仅保留当前预约下符合日期要求的项
        appointment.dates = appointment.dates.filter(dateItem => dateItem.date === chosenDate);
        return appointment;
      })
      // 过滤掉无匹配日期的预约
      .filter(appointment => appointment.dates.length > 0);
    return processedBranch;
  })
  // 过滤掉无符合条件预约的医院分支
  .filter(branch => branch.appointments.length > 0);

console.log(filteredBranches);

逻辑说明

  1. 先遍历所有医院分支,对每个分支的嵌套结构逐层处理
  2. 对内层dates数组做过滤,只保留日期等于目标值的项
  3. 裁剪掉dates为空的预约项,再裁剪掉无有效预约的医院分支
  4. 增加深拷贝逻辑是为了避免修改原始branches数组,若业务场景允许修改原数据可删除深拷贝代码降低性能消耗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:27:02