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

JS统计数组元素重复次数生成指定嵌套对象的问题排查

问题原因

你的代码没有生成预期嵌套结构的核心原因有两个:

  1. 赋值逻辑错误:你给countsObj[x]赋值时,直接存入的是累加后的数字值,并没有创建包含count、filterState属性的嵌套对象结构。
  2. 存在无效代码:箭头函数中包裹的{count: xxx}对象是回调函数的返回值,而forEach本身不会使用回调的返回值,这部分代码完全没有对countsObj产生任何修改作用。
实现思路

要得到目标结构,按以下逻辑处理即可:

  • 遍历原始数组的每一个元素
  • 遍历到元素值x时,先检查countsObj中是否存在x这个键,如果不存在,先初始化该键的值为符合要求的对象结构:{count: 0, filterState: false}
  • 对x对应对象下的count属性做累加1操作
可运行的正确代码
let countsRaw = [7, 8, 7, 6]
let countsObj = {};

countsRaw.forEach((x) => {
  // 首次遇到该值时初始化嵌套对象结构
  if (!countsObj[x]) {
    countsObj[x] = {
      count: 0,
      filterState: false
    }
  }
  // 完成计数累加
  countsObj[x].count += 1
})

运行上述代码后,countsObj的输出和预期结构完全一致:

{
  6: {count: 1, filterState: false},
  7: {count: 2, filterState: false},
  8: {count: 1, filterState: false}
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 07:57:26