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

使用map渲染两层深度嵌套对象时分类及子分类展示异常如何解决

问题根因

你当前的代码将子分类的渲染逻辑嵌套在了分类的遍历循环中,因此每渲染一个父分类就会重复生成一次Subcategories标题,也无法实现分类、子分类分别放在两个独立div的需求。

解决方案

你只需要拆分两次遍历逻辑即可:第一次遍历所有父分类渲染分类列表,第二次先把所有子分类的内容提取到统一数组,再渲染子分类列表,代码修改如下:

const categories = [
  {
    catName: "Education",
    subCategory: [
      {
        subCatName: "College"
      },
      {
        subCatName: "Student"
      }
    ]
  },
  {
    catName: "Motivation",
    subCategory: [
      {
        subCatName: "Study"
      }
    ]
  }
];

export default function App() {
  // 提取所有子分类为统一数组
  const allSubCategories = categories.flatMap(item => item.subCategory)
  return (
    <div className="App">
      <h1>All Categories</h1>
      <div className="container">
        {/* 分类独立渲染区域 */}
        <div className="categoriesContainer">
          <h2>Categories</h2>
          {categories.map((item, index) => (
            <span key={index}>{item.catName}</span>
          ))}
        </div>
        {/* 子分类独立渲染区域 */}
        <div className="subcategoriesContainer">
          <h4>Subcategories</h4>
          {allSubCategories.map((el, idx) => (
            <span key={idx}>{el.subCatName}</span>
          ))}
        </div>
      </div>
    </div>
  );
}

如果你的需求是保留父分类和对应子分类的关联展示,仅需要避免Subcategories标题重复,把Subcategories标题移出第一层map循环即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:45:03