今天浏览网页的时候看到这个题也是一道很经典的题目了

var str ='aaaaaaajsdjdfkdkg';
        var arry=[1,2];
        var obj={};
        for(var i=0;i<str.length;i++){
            if(!obj[str.charAt(i)]){
                obj[str.charAt(i)]=1;
            }else{
                obj[str.charAt(i)]++;
            }
        }
        var numbers=0;
        var stra='';
        for(var a in obj){
            if(obj[a]>numbers){
                numbers = obj[a];
                stra = a;
            }
        }
        alert(stra+'出现'+numbers+'次,出现次数最多');

然后我就想把obj直接输出来,而要把他输出来就的把obj对象转换为一个字符,想了一会没有想到办法,于是网上查了一下,

看到某位大神的方法

var objstr = '{';
        for(var b in obj){
            objstr +="'"+b+"'':''"+obj[b]+"',";
        }
        objstr+='}';
        alert(objstr);

没错就是这样简单粗暴,但是有合情合理,但是突然我又想到obj[key],能不能输出他的val,(我们知道obj.a是肯定可以输出他的值的因为这是一个对象)所以我果断

alert(obj[a])

 

然而没有软用直接undefined,到这里我就不明白了上面 obj[str.charAt(i)]都可以用为毛直接写入a就不能输出值呢?不知道你们不知道不知道原因,后来我想了一下。。。。。。傻逼了,所以果断改为

alert(obj['a'])

输出结果7。。。。。,a不是key,key的整个是'a'