如何在JavaScript中从嵌套对象获取父级名称并生成层级字符串
生成分类层级路径字符串的实现方法
给定如下结构的分类对象:
{ id: 15, name: "Power", childCategories: [], parent: { id: 10, name: "Cables", parent: null, stockItems: [] } }
需要输出格式为 Cables ⟶ Power 的层级路径字符串,下面提供两种适合新手理解的实现方式:
方法一:递归实现
递归的核心思路是不断向上查找父级分类,直到父级为null,再把收集到的名称按层级顺序拼接。
function buildCategoryPath(category) { // 没有父级时,直接返回当前分类名称 if (!category.parent) { return category.name; } // 递归获取父级的完整路径,再拼接当前分类名称 return `${buildCategoryPath(category.parent)} ⟶ ${category.name}`; } // 测试示例 const category = { id: 15, name: "Power", childCategories: [], parent: { id: 10, name: "Cables", parent: null, stockItems: [] } }; console.log(buildCategoryPath(category)); // 输出: Cables ⟶ Power
方法二:迭代实现
如果觉得递归逻辑绕,也可以用循环迭代的方式,从当前分类开始往上遍历父级,收集名称后反转顺序再拼接。
function buildCategoryPath(category) { const pathNames = []; let current = category; // 循环遍历,直到找不到父级分类 while (current) { pathNames.push(current.name); current = current.parent; } // 反转数组(收集顺序是子→父,反转后变成父→子),再用分隔符连接 return pathNames.reverse().join(' ⟶ '); } // 测试示例 const category = { id: 15, name: "Power", childCategories: [], parent: { id: 10, name: "Cables", parent: null, stockItems: [] } }; console.log(buildCategoryPath(category)); // 输出: Cables ⟶ Power
两种方法都能实现需求,迭代方式对新手来说更直观,递归写法更简洁,可以根据自己的理解选择使用。
内容的提问来源于stack exchange,提问作者JamieRhys
相关产品推荐
相关产品推荐

