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

如何通过idAnak获取people数组中对应的父级id

根据idAnak查找对应people的id

给定嵌套结构的people数组,每个people对象包含dataInduk数组,dataInduk的子项又包含dataAnak数组。已知idAnak的值,要找到它所属的people对象的id(比如idAnak='2b2'时返回2),可以用以下两种方式实现:

方法一:使用find+some嵌套调用

利用数组的find和some方法,简洁完成嵌套查找:

function getPeopleIdByAnakId(targetIdAnak) {
  const matchedPerson = people.find(person => 
    person.dataInduk.some(induk => 
      induk.dataAnak.some(anak => anak.idAnak === targetIdAnak)
    )
  );
  return matchedPerson ? matchedPerson.id : null;
}

// 测试示例
console.log(getPeopleIdByAnakId('2b2')); // 输出:2
console.log(getPeopleIdByAnakId('1a1')); // 输出:1
console.log(getPeopleIdByAnakId('xxx')); // 输出:null(无匹配时)

逻辑说明

  • people.find() 遍历数组,返回第一个符合条件的person对象
  • 第一层some() 检查当前person的dataInduk中是否有任意一项满足后续条件
  • 第二层some() 检查当前induk的dataAnak中是否存在idAnak等于目标值的项
  • 找到匹配项就返回对应person.id,没找到则返回null

方法二:嵌套循环遍历

如果需要更直观的逻辑或者兼容旧环境,用三层嵌套循环实现:

function getPeopleIdByAnakId(targetIdAnak) {
  for (const person of people) {
    for (const induk of person.dataInduk) {
      for (const anak of induk.dataAnak) {
        if (anak.idAnak === targetIdAnak) {
          return person.id;
        }
      }
    }
  }
  return null;
}

// 测试
console.log(getPeopleIdByAnakId('2b2')); // 输出:2

逻辑说明

  • 依次遍历people、dataInduk、dataAnak三层数组
  • 一旦找到idAnak匹配的项,立即返回对应的person.id(提前终止遍历,提升效率)
  • 遍历完所有项仍无匹配时,返回null

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 05:10:29