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

如何统计数组内所有对象的全部项目(含treats特殊统计规则)

简便统计数组项目数量的方案

数据结构

const data = [
  {
    treats: [
      { id: "1", name: "treat 1", variants: ["one", "two", "three"], all_vars: false },
      { id: "2", name: "treat 2", variants: ["one", "two", "three"], all_vars: true },
      { id: "3", name: "treat 3", variants: ["one", "two", "three"], all_vars: true }
    ],
    packs: [
      { id: "1", name: "pack 1" },
      { id: "2", name: "pack 2" },
      { id: "3", name: "pack 3" }
    ],
    membs: [
      { id: "1", name: "mem 1" },
      { id: "2", name: "mem 2" },
      { id: "3", name: "mem 3" }
    ]
  }
];

统计规则

  • treats:每个对象若all_vars为false,统计为1 + variants.length(自身1个 + 所有变体数量);若all_vars为true,仅统计为1
  • packs、membs:直接统计数组长度
  • 输出各分类统计结果及总数

简洁实现代码

const [dataset] = data;

// 统计treats
const treatsCount = dataset.treats.reduce((sum, item) => {
  return sum + (item.all_vars ? 1 : (1 + item.variants.length));
}, 0);

// 统计packs和membs
const packsCount = dataset.packs.length;
const membsCount = dataset.membs.length;

// 计算总数
const total = treatsCount + packsCount + membsCount;

// 输出结果
console.log(`treats: ${treatsCount}`);
console.log(`packs: ${packsCount}`);
console.log(`membs: ${membsCount}`);
console.log('-----------');
console.log(`Total: ${total}`);

输出结果

treats: 6
packs: 3
membs: 3
-----------
Total: 12

这个方案用reduce处理treats的特殊统计逻辑,其他数组直接取长度,代码简洁高效,线性遍历的时间复杂度为O(n),完全满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:30:21