软件技术NINI 2024-09-03 14:51 采纳率: 98.4%
浏览 1
已结题

编写一个函数,该函数接受一个数组作为参数,并返回一个对象,该对象的键是数组中的元素,值是该元素在数组中出现的次数。

计算数组中每个元素的出现次数
题目:编写一个函数,该函数接受一个数组作为参数,并返回一个对象,该对象的键是数组中的元素,值是该元素在数组中出现的次数。

提示:你可以使用reduce()方法结合一个对象来累加计数。

function countOccurrences(arr) {  
  // 你的代码  
  return arr.reduce((acc, val) => {  
    if (acc[val]) {  
      acc[val]++;  
    } else {  
      acc[val] = 1;  
    }  
    return acc;  
  }, {});  
}  
  
console.log(countOccurrences([1, 2, 2, 3, 4, 4, 4])); // 输出: { '1': 1, '2': 2, '3': 1, '4': 3 }

  • 写回答

1条回答 默认 最新

  • AitTech 2024-09-03 15:31
    关注
    function countOccurrences(arr) {  
      // 使用 reduce 方法来遍历数组  
      // 初始累加器(acc)是一个空对象 {}  
      // 对于数组中的每个元素 val,更新累加器  
      return arr.reduce((acc, val) => {  
        // 检查累加器(acc)中是否已经存在当前元素(val)的键  
        if (acc[val]) {  
          // 如果存在,则将对应键的值增加 1  
          acc[val]++;  
        } else {  
          // 如果不存在,则在累加器(acc)中创建一个新键,并将其值设置为 1  
          acc[val] = 1;  
        }  
        // 返回更新后的累加器,以便在下次迭代中使用  
        return acc;  
      }, {}); // reduce 的第二个参数是初始累加器,这里是一个空对象  
    }  
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月11日
  • 已采纳回答 9月3日
  • 创建了问题 9月3日

悬赏问题

  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?
  • ¥100 需要跳转番茄畅听app的adb命令