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

使用递归解析JavaScript嵌套对象数组:品牌与父品牌输出问题

问题:遍历品牌层级并输出父品牌关系

需要遍历给定的inventory数组,输出所有品牌名称及其父品牌名称,其中顶级品牌的父品牌为"None",示例输出格式为:None : Parle, Parle : Parle Agro, Parle Agro : Frooti。

let inventory = [
  {
    brand: 'Parle',
    products: [
      {
        brand: 'Parle Agro',
        products: [
          {
            brand: 'Frooti',
            products: []
          },
          {
            brand: 'Bailey',
            products: []
          }
        ]
      }
    ]
  },
  {
    brand: 'Pepsico',
    products: [
      {
        brand: 'VB',
        products: [
          {
            brand: 'Lays',
            products: []
          },
          {
            brand: 'Kurkure',
            products: [
              {
                brand: 'Mad Angles',
                products: []
              }
            ]
          }
        ]
      },
      {
        brand: 'Pepsi',
        products: []
      }
    ]
  },
  {
    brand: 'Cadbury',
    products: []
  } 
];

我尝试了以下递归方法,但未能实现预期效果,请求帮助修正:

function brandName(obj){
for (var key in obj) {
    var item = obj[key];
    if (typeof item === "object"){
        brandName(item.products); }
} } brandName(inventory);

解决方案

你的递归逻辑没有正确跟踪父品牌信息,也没有收集目标结果。可以通过在递归时传递父品牌参数,并维护结果数组来实现需求:

function getBrandRelations(items, parentBrand = "None", result = []) {
  items.forEach(item => {
    // 记录当前父品牌与品牌的对应关系
    result.push(`${parentBrand} : ${item.brand}`);
    // 递归处理子品牌,父品牌更新为当前品牌
    if (item.products.length > 0) {
      getBrandRelations(item.products, item.brand, result);
    }
  });
  return result;
}

// 调用函数并输出格式化后的结果
const brandRelations = getBrandRelations(inventory);
console.log(brandRelations.join(', '));

代码说明

  • 函数接收三个参数:待处理的品牌数组items、当前层级的父品牌parentBrand(默认值"None"对应顶级品牌)、用于存储结果的数组result。
  • 遍历每个品牌项,将父品牌与当前品牌的对应关系存入结果数组。
  • 若当前品牌存在子产品,递归调用函数,将父品牌设为当前品牌,继续处理子层级。
  • 最后通过join(', ')将结果数组拼接成要求的字符串格式输出。

输出结果

None : Parle, None : Pepsico, None : Cadbury, Parle : Parle Agro, Parle Agro : Frooti, Parle Agro : Bailey, Pepsico : VB, Pepsico : Pepsi, VB : Lays, VB : Kurkure, Kurkure : Mad Angles

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 01:45:41