javascript - 我需要帮助弄清楚为什么我在这个函数中得到 NaN

标签 javascript nan

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/

相关文章:

javascript - 在 JS 中附加 div 作为字符串(?)

javascript - 将每一行包裹在 span 中

javascript - 如何在 API 更新时将参数从 DataTable 传递到 Form?

python - 在 python 中,当参数数据类型为 NaN 时,如何返回 NaN 而不是 TypeError

python - 比较包含 nan 的 pandas 系列是否相等?

JavaScript 多页表单 onbeforeunload 问题

javascript - 如何检查 textarea (tinymce) 是否只包含空格?

python - 将组的最后一个值替换为 NaN

r - 是否可以评估指数的分数与指数之和

python - 为什么 (inf + 0j)*1 的计算结果为 inf + nanj?