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

如何统计IPC状态JSON数据中各status值的出现次数?

统计IPC状态数量的解决方案

核心实现思路

用Array.reduce()可以高效完成分组统计,也可以用普通循环实现,以下是两种可行方案,针对alert、NOT_COMMUNICATING和空值(代表正常)三类状态做统计:

示例数据

假设你的JSON数据结构如下:

const ipcData = {
  ipc_status: [
    { status: "alert" },
    { status: "" },
    { status: "NOT_COMMUNICATING" },
    { status: "alert" },
    { status: null },
    { status: "NOT_COMMUNICATING" },
    { status: "   " }, // 处理带空格的空值
    { status: undefined },
    { status: "alert" }
  ]
};

方案一:使用reduce(推荐)

const statusStats = ipcData.ipc_status.reduce((counts, item) => {
  // 统一处理空值、null、undefined和空白字符串
  const currentStatus = item.status?.trim() ?? "";
  
  switch(currentStatus) {
    case "alert":
      counts.alert += 1;
      break;
    case "NOT_COMMUNICATING":
      counts.notCommunicating += 1;
      break;
    default:
      counts.normal += 1;
  }
  
  return counts;
}, { alert: 0, notCommunicating: 0, normal: 0 });

console.log(statusStats);
// 输出:{ alert: 3, notCommunicating: 2, normal: 4 }

方案二:使用普通循环

如果对reduce不太熟悉,普通循环的写法更直观:

let alertCount = 0;
let notCommCount = 0;
let normalCount = 0;

for (const item of ipcData.ipc_status) {
  const currentStatus = item.status?.trim() ?? "";
  
  if (currentStatus === "alert") {
    alertCount++;
  } else if (currentStatus === "NOT_COMMUNICATING") {
    notCommCount++;
  } else {
    normalCount++;
  }
}

const statusStats = {
  alert: alertCount,
  notCommunicating: notCommCount,
  normal: normalCount
};

console.log(statusStats);
// 输出结果和reduce方案一致

关键细节说明

  • 用item.status?.trim()处理可能的undefined或null,避免运行报错;
  • 用?? ""把null/undefined统一转为空字符串,简化后续判断逻辑;
  • trim()处理带空格的"空值",避免把" "这类空白字符串误判为非正常状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:22:24