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

如何在嵌套数组中根据指定key-value获取其所属的完整对象

解决方案

原有代码的逻辑是遍历到匹配的键值对时,仅输出当前键和对应值,没有捕获该键值对所属的完整父对象,调整递归逻辑即可实现需求。

改造后的代码

function findMatchedObjects(target, prop, val, result = []) {
    // 过滤非对象类型的边界情况
    if (typeof target !== 'object' || target === null) return result;
    // 检查当前遍历的对象是否包含目标键值对
    if (target.hasOwnProperty(prop) && target[prop] === val) {
        result.push(target);
        // 如果不需要查找嵌套在匹配对象内部的其他匹配项,可在此处加return result提前结束当前分支的遍历
    }
    // 递归遍历当前对象的所有子元素
    Object.values(target).forEach(child => {
        findMatchedObjects(child, prop, val, result);
    });
    return result;
}

使用示例

用你提供的JSON结构测试:

const testData = [
   {
      "page":"main",
      "content":[
         {
            "type":"item",
            "item":[
               {
                  "name":"HAMMER",
                  "price":"1000"
               },
               {
                  "name":"SWORD",
                  "price":"2000"
               }
            ]
         }
      ]
   }
];

// 查找包含name: HAMMER的对象
const matchedList = findMatchedObjects(testData, 'name', 'HAMMER');
console.log(matchedList);

输出结果

[
  {
    "name": "HAMMER",
    "price": "1000"
  }
]

这个方案会把所有匹配的对象收集到数组中返回,支持多层嵌套结构的查找,如果你只需要直接打印结果,也可以在result.push(target)的位置直接打印target即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:39:03