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

如何统计JavaScript二维数组中各元素的总出现次数并返回计数对象

JavaScript数组元素计数实现方案

首先明确需求:统计二维数组中所有内层数组元素的总出现次数,返回键为元素名称、值为对应计数的对象。

现有思路的问题

你初始定义的let returnObj = {name:"",count:0}结构不符合需求,该结构只能记录单个元素的名称和计数,无法存储多元素的统计结果,正确的初始状态应该是空对象const countResult = {}。

实现方案

方案1:先扁平化数组再统计(逻辑最直观)

先通过flat()将二维数组转为一维数组,再遍历统计每个元素的出现次数:

const someArr = [["A","B"],["A","C"],["C","A"],["B","D"]];
const countResult = {};
// 扁平化二维数组
const flatArr = someArr.flat();
flatArr.forEach(item => {
  // 已存在则计数+1,不存在则初始化为1
  countResult[item] ? countResult[item]++ : countResult[item] = 1;
})
console.log(countResult); // 输出 {"A":3, "B":2,"C":2,"D":1}

方案2:嵌套遍历统计(基于原思路修改)

不需要用map(map用于返回新数组,单纯遍历用forEach即可),直接嵌套遍历内层的每个元素做统计:

const someArr = [["A","B"],["A","C"],["C","A"],["B","D"]];
const countResult = {};
someArr.forEach(arr => {
  arr.forEach(item => {
    countResult[item] = (countResult[item] || 0) + 1;
  })
})

方案3:reduce函数式实现

const someArr = [["A","B"],["A","C"],["C","A"],["B","D"]];
const countResult = someArr.flat().reduce((acc, cur) => {
  acc[cur] = (acc[cur] || 0) + 1;
  return acc;
}, {})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:48:04