检测字符串中出现次数字符最多的字符,并进行排序

第一种方法

var str = 'asdsfsaasddda';
    var arr = [];
    for(var i=0;i<str.length;i++){
        var codeStr = str[i];
        // 检测数组中是否存在某个元素
        var isHas = false;
        for(var j=0;j<arr.length;j++){
            var codeObj = arr[j];
            if (codeObj.code == codeStr) {
                // 如果数组中已经存在该元素,就将其num属性+1
                arr[j].num++;
                isHas = true;
                break;
            }
        }
        // 如果数组中不存在该元素,就往数组中新添加一个对象{code:XX,num:1}
        if (isHas == false) {
            arr.push({code:codeStr,num:1})
        }
    }
    console.log(arr);
    // 数组排序
    arr.sort(function(a,b){
        if (a.num < b.num) {
            return 1;
        }else{
            return -1
        }
    })
    console.log(arr);


    var maxNnm = arr[0].num;
    var arr2 = []
    for(var i=0;i<arr.length;i++){
        if (arr[i].num >= maxNnm) {
            arr2.push(arr[i]);
        }
    }
    console.log(arr2);

第二种方法

 var str = 'ahaihavafsahf';
    // 1.统计:字符串中不同字符出现的次数。
    // 2.比较:比较哪个字符出现的次数最多。

    /*
        统计:判断对象中是否存在某个属性
        存在:就在原来的次数基础上+1
        不存在:首次出现,就给对象添加这个属性,值为1
       { a:1+1+1
        h:1+1
        d:1
        i:1
        f:1
        v:1
        s:1 }
    */
    var obj = {};
    for(var i=0;i<str.length;i++){
        var codeStr = str[i];
        // 字符串的某个字符 === 对象的某个属性名
        var isHas = false;
        for(var key in obj){
            if (codeStr === key) {
                isHas = true;
                // 不是首次出现
                obj[key] = obj[key] + 1;
                break;
            }
        }
        if (isHas == false) {
            // 第一次出现
            obj[codeStr] = 1;
            
        }
    }


    // 2. 比较大小
    var maxNum=0;
    var maxStr;
    for(var key in obj){
        if (obj[key] > maxNum) {
            maxNum = obj[key];
            maxStr = key;
        }
    }
    console.log(maxStr,maxNum);

 

posted @ 2021-06-21 21:36  望尐  阅读(239)  评论(0)    收藏  举报
Document