题目描述
统计字符串中每个字符的出现频率,返回一个 Object,key 为统计字符,value 为出现频率
1. 不限制 key 的顺序
2. 输入的字符串参数不会为空
3. 忽略空白字符
示例1
输入
'hello world'
输出
{h: 1, e: 1, l: 3, o: 2, w: 1, r: 1, d: 1}
hasOwnProperty()
记录下面这个是为了提醒自己要善用hasOwnProperty这个方法
hasOwnProperty:
官方解释:如果 object 具有带指定名称的属性,则 hasOwnProperty 方法返回 true,否则返回 false。此方法不会检查对象原型链中的属性;该属性必须是对象本身的一个成员。
(hasOwnProperty 检查的就是 object 自身的对象,换句话说就是 用console.log 打印出来的对象中是否包含 某个属性)
牛客网的答案如下:
function count(str) {
var obj={};
str=str.replace(/\s/,'');
for(var i=0,length=str.length;i<length;i++){
if(obj.hasOwnProperty(str[i])){
obj[str[i]]++;
}else{
obj[str[i]]=1;
}
}
return obj;
}
代码
function count(str) {
let newarr=[];
let result={};
for(let i=0;i<str.length;i++)
{
//如果已经存在于newarr就把数字设置为1,不存在就把数据放入newarr然后数字增1
if(newarr.indexOf(str[i])==-1)
{
newarr.push(str[i])
result[str[i]]=1;
}
else
{
result[str[i]]++;
}
}
return result;
}
运行环境:JavaScript (V8 6.0.0)
运行时间:995ms
占用内存:77900KB