JS字符串计数

 /*

        1、计数排序的思路

            ==>索引和数据都是数字

            ==>字符'a'索引 数字

            对象数据类型

            ==>对象的key设置字符串里面出现的每一个字符

            ==>对象的value就是出现的次数

        2、循环遍历字符串

            ==>拿到一个字母

            ==>吧每一个字符当作key来使用,添加到obj中

            ==>如果obj里面有这个了,++

                =>访问obj对应的这个成员名,数字++

            ==>如果obj里面没有这个,赋值为1

                =>访问obj对应这个成员名,undefined

            ==>利用对象和数组关联语法进行判断

                =>obj[s]

                =>obj[s]得到的结果,undefined,>=1

                =>能进入if条件说明obj[s]是一个数字并且obj[s]=true,就++

                =>如果进入else条件,说明obj[s]是一个undefined,把obj[s]赋值为1

                =>

                =>

        */

      var str = "abcabcabcabc";

      var obj = {};

      for (var i = 0; i < str.length; i++) {

        var s = str[i];

        console.log(s);

        //判断obj里面有没有这个成员

        //s是一个变量,只能用数组关联语法

        if (obj[s]) {

          obj[s]++;

        } else {

          obj[s] = 1;

        }

      }

      console.log(obj);

      //统计出现此处最多的字符

      //for in 遍历

      var max = ""; //答案

      var maxNum = 0; //比较的中间值

      for (var key in obj) {

        //只要obj某一个成员的值比设置的maxNum大

        if (obj[key] === maxNum) {

          max += key;

        }

        //替换掉maxNum,并且同时给max赋值为这个key

        if (obj[key] > maxNum) {

          maxNum = obj[key];

          max = key;

        }

      }

      //找到一个出现最多的字符

      console.log(max);

      //找到所有出现最多的字符

      console.log(obj[key]);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值