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

如何在JavaScript中统计API返回对象里各winning_id的出现次数?

统计队伍获胜次数的解决方案

我来帮你搞定这个问题!你需要从API返回的teams数据里统计每个winning_id对应的获胜次数,其实用JavaScript的reduce方法就能轻松实现,先分两种情况来给你说明:

情况1:teams数组的每个元素直接是单条比赛记录

如果你的teams数组结构是每个元素都直接包含winning_id字段(比如每个元素就是一场比赛的信息),代码可以这么写:

// 假设你的API响应解析后是这样的结构
const teams = [
  {team_name: "Team A", date: "2018-06-30T16:02:10Z", score: 5, winning_id: 54},
  {team_name: "Team B", date: "2018-06-30T17:02:10Z", score: 3, winning_id: 24},
  {team_name: "Team C", date: "2018-06-30T18:02:10Z", score: 7, winning_id: 54},
  // ... 剩下的97条记录
];

// 统计获胜次数
const winCount = teams.reduce((acc, currentMatch) => {
  const winId = currentMatch.winning_id;
  // 如果当前id已经在统计对象里,就加1,否则初始化为1
  acc[winId] = (acc[winId] || 0) + 1;
  return acc;
}, {});

console.log(winCount); // 输出类似 {54:2, 24:1, ...} 的结果

情况2:teams数组的每个元素是嵌套的对象(符合你给出的示例结构)

如果你的teams数组里每个元素是一个包含多个比赛对象的键值对(比如teams[{0: {...}, 1: {...}}]),那我们需要先把所有的winning_id提取出来,再统计:

// 假设你的API响应解析后是这样的嵌套结构
const teams = [
  {
    0: {team_name: "Team A", date: "2018-06-30T16:02:10Z", score: 5, winning_id: 54},
    1: {team_name: "Team B", date: "2018-06-30T17:02:10Z", score: 3, winning_id: 24}
  },
  {
    2: {team_name: "Team C", date: "2018-06-30T18:02:10Z", score: 7, winning_id: 54},
    3: {team_name: "Team D", date: "2018-06-30T19:02:10Z", score: 2, winning_id: 27}
  },
  // ... 剩下的嵌套元素
];

// 第一步:提取所有的winning_id
const allWinningIds = teams.flatMap(teamObj => 
  Object.values(teamObj).map(match => match.winning_id)
);

// 第二步:统计次数
const winCount = allWinningIds.reduce((acc, winId) => {
  acc[winId] = (acc[winId] || 0) + 1;
  return acc;
}, {});

console.log(winCount); // 输出你想要的 {54:2,24:1,27:1,...} 结构

为什么你之前的方法没成功?

你提到合并数组或转字符串统计失败,大概率是因为没有正确提取所有的winning_id(比如嵌套结构没处理好),或者统计时没有给初始值、处理好不存在的id的情况。用reduce方法可以一步到位,既处理提取又处理统计,逻辑更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:56:51