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

嵌套数组中特定用户ID出现次数统计异常:代码输出1而非预期值5的问题排查

问题分析与修复:统计API返回数据中特定用户出现次数错误

我一眼就看出问题出在哪了,你的代码在遍历对象和数据访问路径上都犯了小错误,导致统计结果不符合预期。

错误点拆解

  1. 遍历对象错误:axios请求返回的discordlistspace是一个完整的响应对象,包含状态码、请求头等额外信息,真实的投票数据藏在discordlistspace.data里(也就是API返回的JSON主体)。你直接对discordlistspace调用forEach,根本不会遍历到你需要的投票数组。
  2. 数据访问路径错误:就算遍历对象对了,代码里写的item.data[0].user.id也是错的——每个循环的item本身就是data数组里的单个投票项,直接访问item.user.id就能拿到用户ID,没必要多此一举去取data[0]。

修复后的完整代码

var dlsapi = { 
  url: 'https://api.discordlist.space/v2/bots/814580247973986314/upvotes', 
  headers: {'content-type': 'application/json', authorization: process.env.DLS} 
};
const discordlistspace = await axios.request(dlsapi);
try {
  let dlscount = 0;
  // 先拿到真正的投票数据数组
  const upvoteList = discordlistspace.data.data;
  upvoteList.forEach(item => {
    // 直接访问当前项的user.id
    if (item.user.id === "221838936866029568") {
      dlscount++;
    }
  });
  console.log(dlscount); // 现在会输出预期的5啦
} catch (error) {
  console.error(error);
}

更简洁的写法(可选)

如果你偏爱简洁的代码风格,可以用数组的filter方法一步完成统计:

const upvoteList = discordlistspace.data.data;
const dlscount = upvoteList.filter(item => item.user.id === "221838936866029568").length;
console.log(dlscount);

这样修改后,就能正确统计到该用户的5次投票记录了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 03:07:44