首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JS数据转换方法似乎不起作用

JS数据转换方法似乎不起作用
EN

Stack Overflow用户
提问于 2021-10-17 06:16:03
回答 1查看 53关注 0票数 0

创建一个函数“calcAverageHumanAge”,它接受狗的年龄数组(‘ages’s ages),并按顺序执行以下操作:

  1. 用以下公式计算狗在人类年的年龄:如果狗是<= 2岁,humanAge =2* dogAge。如果狗的年龄>2岁,humanAge = 16 + dogAge *4
  2. 不包括所有18岁以下的狗(这与养至少18岁的狗是一样的)
  3. 计算所有成年狗的平均人类年龄(您应该已经从其他挑战中知道了我们如何计算平均值)
  4. 为两个测试数据集

运行了这个函数。

测试数据:

数据1: 5,2,4,1,15,8,3数据2: 16,6,10,5,6,1,4

我的解决方案(懒惰为什么行不通):

代码语言:javascript
运行
复制
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);};
EN

回答 1

Stack Overflow用户

发布于 2021-10-17 06:26:46

你有三个问题。您的reduce不返回任何东西是主要的问题,但是在每个回调中,您也要除以list.length --这是没有任何意义的(实际上是这样的,我很笨),然后您就没有从函数中返回任何东西。你想要这样的东西:

代码语言:javascript
运行
复制
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;
};

当对数据运行时:

代码语言:javascript
运行
复制
calcAverageHumanAge([5, 2, 4, 1, 15, 8, 3]); // 44 
calcAverageHumanAge([16, 6, 10, 5, 6, 1, 4]); // 47.333
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69601782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档