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

JS如何从嵌套对象数组中筛选包含指定ID的对象的key列表

嵌套对象数组筛选匹配ID的顶层key实现方案

需求说明

给定目标ID值"12345",需要从嵌套对象集合data中筛选符合以下条件的顶层对象key:

  • 顶层对象存在code数组字段(无该字段的对象直接排除)
  • code数组中至少有一个元素的other.id属性等于目标ID
    最终返回所有符合条件的key组成的数组,输出格式示例:["6180571060967405762c1fc2", ...]

代码实现

示例输入结构

// 参考输入的data结构
const data = {
  "6180571060967405762c1fc2": {
    name: "示例对象1",
    code: [
      { other: { id: "12345" }, remark: "匹配项" },
      { other: { id: "67890" }, remark: "不匹配项" }
    ]
  },
  "6180571060967405762c1fc3": {
    name: "示例对象2",
    // 无code字段,直接排除
  },
  "6180571060967405762c1fc4": {
    name: "示例对象3",
    code: [
      { other: { id: "54321" }, remark: "不匹配项" }
    ]
  }
}
const TARGET_ID = "12345";

核心逻辑代码

const matchedKeys = Object.entries(data).filter(([key, value]) => {
  // 排除无有效code数组的对象
  if (!Array.isArray(value.code)) return false;
  // 检查code数组是否存在匹配ID的元素
  return value.code.some(item => item?.other?.id === TARGET_ID);
}).map(([key]) => key);

兼容低版本环境写法(不支持可选链?.时使用)

const matchedKeys = Object.entries(data).filter(([key, value]) => {
  if (!Array.isArray(value.code)) return false;
  return value.code.some(item => item && item.other && item.other.id === TARGET_ID);
}).map(([key]) => key);

输出结果

以上示例输入运行后输出:
["6180571060967405762c1fc2"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:45:09