创建一个函数“calcAverageHumanAge”,它接受狗的年龄数组(‘ages’s ages),并按顺序执行以下操作:
运行了这个函数。
测试数据:
数据1: 5,2,4,1,15,8,3数据2: 16,6,10,5,6,1,4
我的解决方案(懒惰为什么行不通):
const calcAverageHumanAge = function (ageList) {
const avgAge = ageList
.map(val => (val <= 2 ? 2 * val : 16 + val * 4))
.fliter(val => val >= 18)
.reduce((acc, val, i, list) => {
return acc + val / list.length;
}, 0);};
发布于 2021-10-17 06:26:46
你有三个问题。您的reduce
不返回任何东西是主要的问题,但是在每个回调中,您也要除以list.length
--这是没有任何意义的(实际上是这样的,我很笨),然后您就没有从函数中返回任何东西。你想要这样的东西:
const calcAverageHumanAge = function (ageList) {
const filteredVals = ageList
.map(val => (val <= 2 ? 2 * val : 16 + val * 4))
.filter(val => val >= 18);
return filteredVals.reduce((acc, val) => acc + val) / filteredVals.length;
};
当对数据运行时:
calcAverageHumanAge([5, 2, 4, 1, 15, 8, 3]); // 44
calcAverageHumanAge([16, 6, 10, 5, 6, 1, 4]); // 47.333
https://stackoverflow.com/questions/69601782
复制相似问题