使用not运算符时,此Javascript if语句不会运行吗?

时间:2018-02-16 00:17:21

标签: javascript

我试图将一个字符串中的每个字母作为键返回一个对象,每个键的值是该字母出现的次数。

if语句似乎没有执行,我认为这是一个not运算符的问题,因为如果我删除它并将该字母放在对象中以便它评估为真。

function multipleLetterCount(str){    
    var countObj = {};
    for(var i = 0; i < str.length; i++){
        //Why won't this if statement run???
        if(!str[i] in countObj){
            countObj[str[i]] = 1;
        } else {
            countObj[str[i]]++; 
        }
    }
    return countObj;
}

multipleLetterCount("aaa")

返回{a:NaN}

1 个答案:

答案 0 :(得分:4)

您需要使用否定运算符(!

来包装您的条件
if(!(str[i] in countObj))

甚至更好,改变你的状况:

if (str[i] in countObj) {
    countObj[str[i]]++;
} else {
    countObj[str[i]] = 1; 
}