JS数据转换方法运行失效,calcAverageHumanAge函数问题排查
问题排查与修复
错误点列表
- 拼写错误:数组过滤方法
filter被误写为fliter,缺少字母t,会直接抛出方法不存在的报错 - 无返回值:函数内部计算得到平均年龄结果后没有执行
return操作,调用函数时只会得到undefined
修复后的代码
const calcAverageHumanAge = function (ageList) { return ageList .map(val => (val <= 2 ? 2 * val : 16 + val * 4)) .filter(val => val >= 18) .reduce((acc, val, i, list) => { return acc + val / list.length; }, 0); };
如果你觉得累加时除以数组长度的写法不够直观,也可以改为先算所有成年狗年龄总和再除以长度,两种写法计算结果完全一致:
.reduce((acc, val) => acc + val, 0) / list.length
测试运行结果
- 数据集1
[5, 2, 4, 1, 15, 8, 3]运行结果:44 - 数据集2
[16, 6, 10, 5, 6, 1, 4]运行结果:≈47.33
内容的提问来源于stack exchange,提问作者PAPPI-HS
相关产品推荐
相关产品推荐

