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

如何根据子对象id值匹配并获取对应父对象的id?

实现findId函数的方案

假设你的数据源结构类似这样:

const data = [
  {
    id: "id-1",
    p1: { id: "abc" },
    p2: { id: "def" },
    p3: { id: "jkl" }
  },
  {
    id: "id-2",
    p1: { id: "ghi" },
    p2: { id: "mno" },
    p3: { id: "pqr" }
  },
  {
    id: "id-3",
    p1: { id: "stu" },
    p2: { id: "vwx" },
    p3: { id: "912" }
  }
];

你可以这样实现findId函数:

function findId(childId) {
  // 遍历每个父对象
  for (const parent of data) {
    // 检查三个子对象的id是否匹配目标值
    if (parent.p1.id === childId || parent.p2.id === childId || parent.p3.id === childId) {
      return parent.id;
    }
  }
  // 没找到匹配项时返回undefined,也可自定义返回值
  return undefined;
}

优化方案(适合大数据量场景)

如果数据量较大,建议提前构建子id到父id的映射表,后续查询可达到O(1)的时间复杂度:

// 预先构建映射表
const childToParentMap = new Map();
data.forEach(parent => {
  childToParentMap.set(parent.p1.id, parent.id);
  childToParentMap.set(parent.p2.id, parent.id);
  childToParentMap.set(parent.p3.id, parent.id);
});

// 查询函数
function findId(childId) {
  return childToParentMap.get(childId);
}

测试验证:

  • findId("ghi") 返回 "id-2"
  • findId("912") 返回 "id-3"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:22:44