function multipleLetterCount(str){
var finalObj = {};
for(var i = 0; i < str.length; i++){
if(!str[i] in finalObj){
finalObj[str[i]] = 1;
} else {
finalObj[str[i]]++;
}
}
return finalObj;
}
console.log(multipleLetterCount("SomeWord"));Run Code Online (Sandbox Code Playgroud)
我需要帮助弄清楚为什么这些价值会以NaN的形式出现.谢谢
为什么这些价值观会以NaN的形式出现
str[i]表示每次迭代中的不同字符.当你否定那个角色时!str[i]就会变成这样false.因此,condition(if(false in finalObj))始终false只执行else部分.此时finalObj[str[i]]是undefined.最后,递增undefined(undefined++)给你NaN.
尝试使用Object.prototype.hasOwnProperty()返回一个布尔值来指示对象是否具有指定的属性作为其自己的属性:
function multipleLetterCount(str){
var finalObj = {};
for(var i = 0; i < str.length; i++){
if(!finalObj.hasOwnProperty(str[i])){
finalObj[str[i]] = 1;
} else {
finalObj[str[i]]++;
}
}
return finalObj;
}
console.log(multipleLetterCount("SomeWord"));Run Code Online (Sandbox Code Playgroud)