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

JavaScript遍历数组统计封禁/未封禁用户数代码问题

问题原因

你的代码统计结果错误的核心问题有2个:

  • 计数变量NotBanned和BannedUsers都定义在了循环体内部,每次遍历单条用户数据时,变量都会被重新赋值为0,之前累加的数值会被直接覆盖,最终永远只能得到0或1的结果,无法完成全量数据累加
  • 统计封禁用户的循环中,日志打印文案错误写为"Not Banned",会干扰调试判断

运行效果截图

正确实现代码

不需要两次遍历数组,单次遍历即可完成两类用户统计,性能更好:

// 计数器必须定义在循环外部,初始化值为0
let bannedUserCount = 0;
let notBannedUserCount = 0;

for (const userItem of res.data.data) {
  if (userItem.banned === true) {
    bannedUserCount++;
  } else if (userItem.banned === false) {
    notBannedUserCount++;
  }
  // 若存在banned为null/undefined等异常状态,可在此处新增分支单独统计
}

console.log('封禁用户总数:', bannedUserCount);
console.log('未封禁用户总数:', notBannedUserCount);

如果偏好函数式写法,也可以用reduce方法实现:

const countResult = res.data.data.reduce(
  (res, userItem) => {
    if (userItem.banned === true) {
      res.banned += 1;
    } else if (userItem.banned === false) {
      res.notBanned += 1;
    }
    return res;
  },
  { banned: 0, notBanned: 0 }
);

// 直接取countResult.banned、countResult.notBanned即可得到统计值

注意:如果接口返回的banned字段不是布尔类型(比如你提到的标记为字符串"banned"的情况),需要把判断条件替换为对应的值匹配逻辑,例如userItem.banned === 'banned',避免因类型不一致导致判断失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:06:23