You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript实现水仙花数判断返回布尔值报错排查

问题根因
  • 函数入参value是Number类型,该类型不存在length属性,也无法通过下标索引直接读取每一位数字,原代码中value.length取值为undefined,循环逻辑完全无法正常执行。
  • 原代码未做类型转换就直接按下标取位,拿到的不是有效数字值,幂运算计算逻辑完全失效。
  • 逻辑判断使用宽松相等==存在隐式类型转换风险,可能出现误判。
修正代码
function narcissistic(value) {
  const numStr = String(value);
  const digitCount = numStr.length;
  let powerSum = 0;
  for (let i = 0; i < digitCount; i++) {
    powerSum += Math.pow(Number(numStr[i]), digitCount);
  }
  return powerSum === value;
}
逻辑说明
  • 先将传入的数值转为字符串,即可通过length拿到总位数,也可以通过下标逐位取出单个数字字符
  • 逐位取出的字符转为Number类型后,以总位数为指数做幂运算,累加得到幂和
  • 直接返回幂和与原始值的全等比较结果,天然是布尔类型,无需额外写if/else分支返回true/false,符合题目要求
测试用例验证
  • 入参153:1³+5³+3³ = 1+125+27 = 153,返回true
  • 入参123:1³+2³+3³ = 36 ≠ 123,返回false
  • 入参9474:9⁴+4⁴+7⁴+4⁴ = 9474,返回true

内容的提问来源于stack exchange,提问作者Tirtharaj Roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 18:45:41