首页 > 统计字符串出现次数最多

统计字符串出现次数最多

这几天公司面试新人,出了一道题,统计字符串出现次数最多

var str = 'asdfssaaasasasasaa';
var json = {};
for (var i = 0; i < str.length; i++) {
    if(!json[str.charAt(i)]){
        json[str.charAt(i)] = 1;
    }else{
        json[str.charAt(i)]++;
    }
};
var Max = 0;
var Index = '';
for(var i in json){
    if(json[i]>iMax){
        Max = json[i];
        Index = i;
    }
}
console.log('出现次数最多的是:'+Index+'出现'+Max+'次');

我用了另一种方法,同事说那样执行效率低,写了这种给我看,其中有一步不懂

    if(!json[str.charAt(i)]){
        json[str.charAt(i)] = 1;
    }else{
        json[str.charAt(i)]++;
    }

    对象加[]这种是什么做法?

charAt()方法返回指定索引位置的char值,怎么会是对象呢,json[str.charAt(i)] = 1是不是就像一个hash


[str.charAt(i)]就是对象的key啊


在json中取一个key为str.charAt(i)的value,功能和.一样,比如'var json = {a: 3},
但是又有一些区别:

[]总是能代替点运算符。但"."不一定能全部代替[]
[]可以用字符串变量的内容作为属性名
[]可以用纯数字为属性名
[]可以用js的关键字和保留字作为属性名


这个相当于把字符当作json对象的key,对象的key必须是唯一的,然后用value来统计字符出现的次数。

【热门文章】
【热门文章】