如何根据子对象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
相关产品推荐
相关产品推荐

