JavaScript判断一个字符串(数组)中出现次数最多的字符(元素)及其出现的次数

博客主要介绍判断数组中出现次数最多的元素,指出字符串和数组原理相同可合并处理,还提及了测试数组、字符串以及数组中重复元素个数相同的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

判断数组中出现次数最多的元素(原理一样 String和Array可以合并):

function maxCountElement(arr) {// 传入一个字符串或者数组
        let obj = {};//声明一个接收对象
        for (let i = 0; i < arr.length; i++) {// 循环字符串或者数组
          let key = arr[i];// 数组或者字符串下标对应的每一项 用key存起来 比如arr=[“a”,“b”,“c”]
          //分别是 key=["a","b","c"][0], key=["a","b","c"][1], key=["a","b","c"][2]
          if (!obj[key]) {//因为obj开始是空对象 所以初始obj[key]必然为undefined 取反
            obj[key]=1;//给obj下对应的key 赋值为1,代表她第一次出现了,之前都是undefined
          } else {//当数组或者字符串对应的下标元素 和之前出现的下标元素相同时,
            obj[key]++;//obj下对应的key已经存在了 次数递增即可
          }
        }

        let maxCount = 0;//声明一个number值 代表字符串或者数组内某个元素出现的最大次数
        let maxElement = arr[0];// 先声明最大数为 字符串或者数组第一项
        let repeatElement = [];//声明一个对象接收重复的对象
        // console.log(obj,'obj')
        // {a: 1, b: 2, c: 4, d: 2, e: 1, …} "obj"
        for (let key in obj) {//将接收到的obj 进行for in 循环
          if (obj[key] > maxCount) {//如果obj对应的下标大于 某个元素出现的最大次数
            maxCount = obj[key];//则将obj对应的下标 出现的次数 用变量存下来
            maxElement = key;//这个元素用maxElement存下来
            repeatElement.length = 0;// 将重复的元素组成的数组 清空
          } else if (maxCount === obj[key]) {//如果最大次数就等于了,接收obj对应的下标出现的次数
            repeatElement.push(key);//那么将这个元素放入 接收重复元素的数组
          }
        }

        if (repeatElement.length) {//当eq数组多于一个->也就是出现了同样重复次数的项
          for (let j = 0; j < repeatElement.length; j++) {//再次循环接收重复元素的数组
            maxElement += ',' + repeatElement[j];//用字符串将重复的元素 连接起来
          }
        }//最后将,该数组中出现次数最多的元素:maxElement 和它出现次数maxCount return出去;
        return "该数组中出现次数最多的元素:" + maxElement + "-出现次数为:" + maxCount + "次";
      }

      let arr = ["a", "b","b","c", "c","c","c","d","e", "d", "A",];

      let res = maxCountElement(arr);

      console.log(res);

测试数组Array
在这里插入图片描述
测试字符串String
在这里插入图片描述
测试数组中 重复元素个数相同时
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值