如果 Mean = Mode 则应显示 1,否则应显示 0 的代码故障排除
Posted
技术标签:
【中文标题】如果 Mean = Mode 则应显示 1,否则应显示 0 的代码故障排除【英文标题】:Troubleshooting a code that is supposed to display 1 if Mean = Mode and 0 if it does not 【发布时间】:2021-10-12 00:08:41 【问题描述】:我是一个新手编码器,我正在尝试编写一个代码,如果平均值等于众数则返回 1,否则返回 0。到目前为止,我编写的代码只返回 0,即使它应该是 1。任何帮助或指出我出错的地方的提示将不胜感激!
function ArrayChallenge(arr)
let sum = 0
let totalNum = arr.length
let mean = sum/totalNum
for (i=0; i < arr.length; i++)
if (arr[i] > 0)
sum+= arr[i]
const numList =
arr.forEach(elem => numList[elem] = numList[elem] + 1 || 1)
let mode = []
let numMax = 0
for (const key in numList)
if(numList[key] > numMax)
mode = [Number(key)]
numMax = numList[key]
else if (numList[key] === numMax)
mode.push(Number(key))
if (mode.length === Object.keys(numList). length) mode = []
if (mean === mode)
return 1
else return 0
【问题讨论】:
Mode 似乎是一个数组,而 mean 是一个数字。所以他们永远不可能相等 调试提示:什么是您认为应该相等的值? 【参考方案1】:let mean = sum/totalNum
应该在 for 循环之后,以便填充 sum
。
for (i=0; i < arr.length; i++)
if (arr[i] > 0) sum+= arr[i]
let mean = sum/totalNum
当您分别检查返回 1 或 0 时,会进行故障比较,
因为mean
是一个数字,mode
是一个数组。因此,通过添加 mode.length,您将获得数组的实际长度(数字),现在您可以进行比较。
if (mean === mode.length)
return 1
else return 0
结果: 根据您的代码,测试数据的行为将是:
//ArrayChallenge([10,10,10]) -> 0
//ArrayChallenge([0,0,0]) -> 1
请注意,上述结果是假设您要检查模式的长度时得出的。如果您能用更多信息描述问题,那就太好了。
【讨论】:
以上是关于如果 Mean = Mode 则应显示 1,否则应显示 0 的代码故障排除的主要内容,如果未能解决你的问题,请参考以下文章