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

1、去重:

法1:使用数组IndexOf去重 法2:使用对象Key:

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));
复制代码

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://juejin.im/post/5ab05bcf6fb9a028cc6109c9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值