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

使用jQuery分离JSON对象中的嵌套数组

嗨,我完全懂你现在的困扰!本来只是想把每个流派单独塞进<p>标签里,结果嵌套循环搞出了重复的块,肯定头大对吧?咱们来把这个问题捋清楚,分分钟解决它~

首先,我猜你之前的代码大概是这样的(踩了重复添加容器的坑):

// 错误示例:每次循环流派都append外层块,导致重复
const data = { items: [{ title: "头号玩家", genres: ["动作", "科幻"] }, { title: "怦然心动", genres: ["喜剧", "爱情"] }] };
const container = document.getElementById("content");

data.items.forEach(item => {
  const itemBlock = document.createElement("div");
  itemBlock.innerHTML = `<h2>${item.title}</h2>`;
  
  // 问题就在这里!每次遍历流派都把整个itemBlock加到页面
  item.genres.forEach(genre => {
    itemBlock.innerHTML += `<p>${genre}</p>`;
    container.appendChild(itemBlock);
  });
});

上面的代码会让每个流派都触发一次container.appendChild(itemBlock),相当于同一个项目块被加了N次(N是流派数量),自然就重复了。

正确的做法:先组装完所有内容,再一次性添加

你需要先把当前项目的所有流派<p>都塞进外层块里,最后只把完整的外层块加到页面一次就好。两种写法供你选:

写法1:用DOM元素操作

const data = { items: [{ title: "头号玩家", genres: ["动作", "科幻"] }, { title: "怦然心动", genres: ["喜剧", "爱情"] }] };
const container = document.getElementById("content");

data.items.forEach(item => {
  // 创建当前项目的外层容器
  const itemBlock = document.createElement("div");
  itemBlock.innerHTML = `<h2>${item.title}</h2>`;
  
  // 先把所有流派的<p>都塞进itemBlock
  item.genres.forEach(genre => {
    const genrePara = document.createElement("p");
    genrePara.textContent = genre;
    itemBlock.appendChild(genrePara);
  });
  
  // 最后只加一次到页面!
  container.appendChild(itemBlock);
});

写法2:用模板字符串更简洁

如果你喜欢用字符串拼接,map+join可以快速把流派转换成HTML片段:

const data = { items: [{ title: "头号玩家", genres: ["动作", "科幻"] }, { title: "怦然心动", genres: ["喜剧", "爱情"] }] };
const container = document.getElementById("content");

data.items.forEach(item => {
  // 把每个流派转成<p>字符串,再拼接起来
  const genreHtml = item.genres.map(genre => `<p>${genre}</p>`).join('');
  // 组装整个项目的HTML
  const itemHtml = `
    <div>
      <h2>${item.title}</h2>
      ${genreHtml}
    </div>
  `;
  // 一次性插入到容器
  container.innerHTML += itemHtml;
});

这样处理后,每个项目只会生成一个外层块,里面的流派各自占一个<p>,完全不会重复啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:51:02