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

React:如何使用.map实现按分类分组的项目列表渲染

问题解决方案

问题根源

你现有代码的分组逻辑判断条件错误,使用了每条数据的唯一id作为分组匹配依据,导致每条数据都会生成独立的分类分组,因此每条数据都会单独携带分类标题输出。

调整方法

仅需要修改数据分组逻辑的匹配规则,改为按Category字段作为分组依据即可,修改后的数据处理代码如下:

const sorterAR = [];
myArray.forEach((item) => {
  // 改为按Category字段匹配分类,而非按子项id匹配
  let cat = sorterAR.find(
    (cat) => cat.Category === item.Category
  );
  if (!cat) {
    cat = {
      // 分类的id直接用Category值保证唯一即可
      id: item.Category,
      Category: item.Category,
      items: [],
    };
    sorterAR.push(cat);
  }
  cat.items.push(item);
});

渲染代码本身逻辑无需调整,补充React要求的key属性避免运行警告即可,优化后参考:

<div className="App">
  {sorterAR.map((cat) => (
    <div key={cat.id}>
      <div>
        <b>{cat.Category}</b>
      </div>
      <ul>
        {cat.items.map((item) => (
          <li key={item.id}>{item.Name}</li>
        ))}
      </ul>
    </div>
  ))}
</div>

修改后就会按照分类字段把同分类的所有数据汇总到同一个分组下,渲染时每个分类只会出现一次标题,下方集中展示该分类下所有项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:54:00