js对象赋值

下面代码中,哪一步是把key(h,e,l...这些字母)放进obj里面的
是不是在 if(obj[str1[i]]) 这步里面判断假如没有就放进去
注:代码是统计字符串中每个字符的出现频率,返回一个 Object,key 为统计字符,value 为出现频率

function count(str)
{
var obj={};
var str1=str.match(/\S/g)
for(var i in str1){
    if(obj[str1[i]]){ //这里str1[i]表示遍历出的每一个属性
        obj[str1[i]]++;
    }
    else{ //可以看作是if(obj[str1[i]]===undefined)的简写
        obj[str1[i]]=1;
    }
}
return obj;
}

输入

'hello world'

输出

{h: 1, e: 1, l: 3, o: 2, w: 1, r: 1, d: 1}
阅读 3.3k
4 个回答

我对整个代码的解释如下,希望能对你有所帮助!

function count(str)
{
    var obj={}; //定义一个对象用于存储和统计字符出现的个数
    var str1=str.match(/\S/g);  //对传入的字符串分割成数组
    for(var i in str1){  //循环
        if(obj[str1[i]]){ //查看当前循环的str1[i]是否在obj中存在,若存在,则对应的数值加1
            obj[str1[i]]++;
        }
        else{ //若不存在,便给obj添加一个key值为str1[i],value值为1的对象
            obj[str1[i]]=1;
        }
    }
    return obj; //返回统计的字符串的对象
}
else{ //可以看作是if(obj[str1[i]]===undefined)的简写
        obj[str1[i]]=1;
    }

这步

else{ //可以看作是if(obj[str1[i]]===undefined)的简写
        obj[str1[i]]=1;
    }

obj 里面没有对应的 key没有,就手动放进去,初始化频数 value为 1.

哪一步是把key(h,e,l...这些字母)放进obj里面的
是不是在 if(obj[str1[i]]) 这步里面判断假如没有就放进去

两个问题可以一起回答:

    if(obj[str1[i]]){ //如果 obj 里已经记录了这个字符,这个字符的计数+1
        obj[str1[i]]++;
    }
    else{ //如果 obj 里没有这个字符,那么给 obj 添加这个字符属性,这个字符属性的计数=1
        obj[str1[i]]=1;
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题