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

如何对包含嵌套数组的对象数组进行筛选,匹配指定room字段值?

你当前的代码使用了map方法,它会遍历data的所有元素并返回等长的数组,无法过滤掉不符合要求的顶层building条目,所以得不到正确结果。

正确实现如下:

const res = data.filter(buildingItem => {
  return buildingItem.building.some(room => userRoom.includes(room.room))
})

逻辑说明:

  • 用filter遍历顶层的data数组,只保留判断结果为true的元素
  • 用some方法校验当前building的房间列表,只要存在任意一个房间号在userRoom中,就返回true,对应的building条目就会被保留,完全匹配你给出的预期输出。

如果你后续需要同时过滤掉每个building下不匹配的房间,可以用如下写法:

const res = data
  // 先筛选出有匹配房间的building条目
  .filter(buildingItem => 
    buildingItem.building.some(room => userRoom.includes(room.room))
  )
  // 再过滤每个building下的房间列表,只保留匹配项
  .map(buildingItem => ({
    ...buildingItem,
    building: buildingItem.building.filter(room => userRoom.includes(room.room))
  }))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:36:03