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

JavaScript如何去除API返回结果中的重复节目标题?

解决API返回重复节目标题的去重问题

没问题,我帮你搞定这个重复标题的问题!核心思路就是跟踪已经处理过的标题,确保每个匹配的节目只返回一次。这里给你两种实用的解决方案:

方案一:用ES6 Set高效去重(推荐)

Set是专门用来存储唯一值的结构,检查元素是否存在的性能比数组高很多,非常适合这个场景:

var data = JSON.parse(request.responseText);
const lateNightHosts = ['The Late Show with Stephen Colbert', 'Conan', 'Jimmy Kimmel Live'];
// 初始化Set来记录已处理的标题
const seenShows = new Set();

// 建议用for...of遍历数组(如果data是数组的话,比for...in更安全)
for (const item of data) {
  const title = item._embedded.show.name;
  // 同时满足两个条件:标题在目标列表里,且还没被处理过
  if (lateNightHosts.includes(title) && !seenShows.has(title)) {
    // 这里写你要执行的逻辑,比如返回标题、打印等
    console.log(title);
    // 把已处理的标题加入Set,避免后续重复处理
    seenShows.add(title);
  }
}

方案二:用数组手动去重(兼容旧环境)

如果你的环境不支持ES6 Set,可以用数组来记录已处理的标题:

var data = JSON.parse(request.responseText);
const lateNightHosts = ['The Late Show with Stephen Colbert', 'Conan', 'Jimmy Kimmel Live'];
const seenShows = [];

for (const item of data) {
  const title = item._embedded.show.name;
  if (lateNightHosts.includes(title) && seenShows.indexOf(title) === -1) {
    console.log(title);
    seenShows.push(title);
  }
}

小提示

  • 尽量用for...of代替for...in遍历数组:for...in会遍历对象的所有可枚举属性,可能会拿到数组的额外属性(比如自定义的原型属性),而for...of只遍历数组的元素,更安全。
  • 如果你的lateNightHosts数组很大,还可以把它转成Set,这样includes的检查性能会更高:const lateNightHostsSet = new Set(lateNightHosts);,然后用lateNightHostsSet.has(title)来判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:54:22