去重除了indexOf的其他方法(使用对象Key的方法)及统计重复次数

1、去重:

  法1:使用数组IndexOf去重

  法2:使用对象Key:

 

<script>

var arr1 = [1,13,24,11,11,14,1,2];
    let unique = function(arr) {  
        let hashTable = {};
        let data = [];
        for(let i=0,l=arr.length;i<l;i++) {
            alert(!hashTable[arr[i]]);
            if(!hashTable[arr[i]]) {
                hashTable[arr[i]] = true;
                data.push(arr[i]);
            }
        }
        console.log(hashTable);
    return data;
    }
    console.log(unique(arr1));
</script>

2、找出字符串中出现次数最多的字符及显示次数

  法1、使用indexOf循环

    

//var str = "ssraetadsdafaerasssssdajigaf";
        var str = "fffffff";
        var strr = "";
        var ci = 0;
        var Lastname = "";
        var Lastci = 0;
        var ind = 0;
        var flag1 = 0;
        for(var i = 0;i<str.length;i++){
            // console.log(str.charAt(i));
            // console.log(strr);
            if(strr.indexOf(str.charAt(i))!=-1){
                //alert(strr.indexOf(str.charAt(i)));
                continue;
            }
            //不加这个判断运行166次,加上以后运行38次

        
        

            v1 : for(var j = 0;j<str.length+1;j++){
                var indd = str.indexOf(str.charAt(i),ind);
                ind = indd+1;
                flag1++;
                if(indd == -1){
                    ci = j;
                    ind = 0;
                    if(ci>=Lastci){
                        Lastci = ci;
                        Lastname = str.charAt(i);
                    }
                    break v1;
                }    
            }
            strr += str.charAt(i);
        }
        console.log("运行次数"+flag1);
        console.log("出现最多的字母"+Lastname);
        console.log("出现最多的次数"+Lastci);
//循环次数为arr.length+1,否则会影响类似ffffff这种字符串的判断。
 

  法2:使用对象key值的方法

//法2:使用对象key值实现
        function findMaxDuplicateChar(str) {  
            if(str.length == 1) {
                return str;
            }
            let charObj = {};
            for(let i=0;i<str.length;i++) {
                if(!charObj[str.charAt(i)]) {
                    charObj[str.charAt(i)] = 1;
                }else{
                    charObj[str.charAt(i)] += 1;
                }
                    }
            let maxChar = '',
            maxValue = 1;
            for(var k in charObj) {
                if(charObj[k] >= maxValue) {
                    maxChar = k;
                    maxValue = charObj[k];
                }
            }
                return maxChar;
        }
 
原文地址:https://www.cnblogs.com/qdcnbj/p/8548000.html