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

如何遍历对象数组中的嵌套数组并在JSX中渲染数据?

解决JSX渲染产品变体数据的问题

你的JSON数据层级是:最外层nodes数组 → 每个元素包含variants对象 → variants.nodes才是存放所有产品变体的数组,这才是你需要遍历渲染的目标。之前的map只拿到了外层nodes,没深入到变体数据,所以无法渲染具体字段。

单产品场景(外层nodes只有一个元素)

如果你的数据里外层nodes只有一个产品,直接提取变体数组后遍历即可:

// 假设原始数据存在data变量中
const variants = data.nodes[0]?.variants?.nodes || [];

// 在JSX中渲染
return (
  <div className="variant-list">
    {variants.map((variant) => (
      <div key={variant.id} className="variant-item">
        <p>ID: {variant.id}</p>
        <p>款式: {variant.title}</p>
        <p>价格: {variant.priceV2.amount} {variant.priceV2.currencyCode}</p>
      </div>
    ))}
  </div>
);

多产品场景(外层nodes有多个产品)

如果外层nodes包含多个产品,需要嵌套map遍历:

return (
  <div className="product-list">
    {data.nodes.map((product, idx) => {
      const productVariants = product.variants?.nodes || [];
      return (
        <div key={`product-${idx}`} className="product-item">
          <h3>产品 {idx + 1}</h3>
          {productVariants.map((variant) => (
            <div key={variant.id} className="variant-item">
              <p>ID: {variant.id}</p>
              <p>款式: {variant.title}</p>
              <p>价格: {variant.priceV2.amount} {variant.priceV2.currencyCode}</p>
            </div>
          ))}
        </div>
      );
    })}
  </div>
);

关于map创建新数组的问题

map确实会返回新数组,但这是React渲染列表的正常机制——React需要通过新数组的变化来识别DOM更新,完全不用担心这个问题,这不是错误,是React的工作方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:57:25