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"));
我需要帮助来弄清楚为什么值会显示为 NaN。谢谢
最佳答案
why the values are coming up as NaN
str[i]
表示每次迭代中的不同字符。当您否定像 !str[i]
这样的字符时,它变成了 false
。因此,条件 (if(false in finalObj)
) 始终为 false
并且仅执行 else
部分。此时finalObj[str[i]]
是undefined
。最后,递增 undefined
(undefined++
) 得到 NaN
。
试试Object.prototype.hasOwnProperty()
它返回一个 bool 值,指示对象是否具有指定的属性作为其自身的属性:
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"));
关于javascript - 我需要帮助弄清楚为什么我在这个函数中得到 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51202281/