计算字符出现频次

150 阅读1分钟

题目:统计字符串中每个字符出现的次数并以对象方式记录;

var str = 'aaabbccdddeeee';
var obj={};
for(var i =0;i<str.length;i++){
    if(obj[str[i]]===undefined){
        obj[str[i]]=1;
    }else{
        obj[str[i]]++;
    }
}
console.log(obj);

代码优化:

var str = 'aaabbccdddeeee';
var obj={};
for(var i =0;i<str.length;i++){
    if(!obj[str[i]]){
        obj[str[i]]=1;
    }else{
        obj[str[i]]++;
    }
}
console.log(obj);
//优化解释: 语句表达为 if(obj[str[i]]===undefined) 如果对象中不含其str[i]属性及属性值为真(undefined),则执行该语句内函数obj[str[i]]=1;   因为undefined 的bool值为false,也就是说令obj[str[i]为false即可等价替换,则
 !obj[str[i]](取反) 等于obj[str[i]]===undefined;

解析:

1.定义空对象准备存储字符串属性及属性值;

2.利用for循环遍历 字符串内部字符;

3.在for循环内,以str[i]表示字符串中的字符,obj[str[i]]为,对象obj中str[i]属性对应值;

4.for循环内做if判断,如果对象obj中不含str[i]属性及对应值,则向obj中写入属性str[i]属性及赋值为1,这样即可写入对象所有Str中所含的元素;

5.当if条件判断不成立时,则说明在对象中已经存在str[i]属性及对应值1,这是使其值自增1(obj[str[i]++),当for循环遍历结束时,即对象中存储了str中所有元素及该元素所出现的次数;