JS数组的和和平均值求大于和小于平均值的个数

//声明一个你要的30整数数组的和和岼均值 //按你的要求给这个数组的和和平均值赋值30个从2开始的偶数 //声明一个新数组的和和平均值 来保存平均值 slice方法可以截取指定长度数组的囷和平均值 一开始top为0,bottom为5 做slice参数其实就是截取[0,4]五个
五个五个循环截取 求平均赋值给newArr即可
每次循环top和bottom都要挪5个位置
}

译者按: 有时候一个算法的直观、简洁、高效是需要作出取舍的

本文采用意译,版权归原作者所有

函数式编程中用于就像“毒品”一样它让很多人爱上函数式编程。洇为它们真的十分常用而且又超级简单 和 都仅需一个参数,该参数定义操作数组的和和平均值每一个元素的函数即可reduce()会复杂一些,我の前写过一篇文章介绍为什么人们难以掌握reduce()方法其中一个原因在于很多入门资料都仅仅用算术作为例子。我写了很多用reduce()来做算术以外的唎子

reduce()来计算数组的和和平均值的平均值是一个常用的模式。代码看起来非常简单不过在计算最终结果之前你需要做两个准备工作:

這两个事情看起来都很简单,那么计算数组的和和平均值的平均值并不是很难了吧解法如下:

// 计算数组的和和平均值长度的函数 // compose()的参数伱可以倒着读,来理解程序的含义

来对同一个输入进行sumlength的计算并求得平均值。

不要担心看不明白上面主要是为大家演示有 4 种方式来實现average功能。这就是 JavaScript 的优美之处

相对来说,本文的内容是有点极客的虽然笔者之前深度使用函数式语言 Haskell 做过不少研究项目,对函数式颇囿理解但是 point-free 风格的代码,我们是不建议在实际工程中使用的维护成本会很高。我们所有的代码都要求直观易懂不推崇用一些奇淫技巧来实现。除非某些万不得已的地方但是一定要把注释写得非常清楚,来降低后期的维护成本

5. 终极优化: 一次计算出结果

之前所有的解法都可以很好地工作。那些使用reduce()的解法都有一个共同点它们将大的问题拆解问小的子问题,然后通过不同的方式将它们组合起来但是吔要注意它们对数组的和和平均值遍历了三次,感觉很没有效率如果一次就可以计算出来,才是最佳的方案确实可以,不过需要一点數学运算

为了计算 n 个元素的平均值,我们使用下面的公式:

那么计算 n+1 个元素的平均值,使用同样的公式(唯一不同的是 n 变成 n+1):

结论昰我们可以一直记录当前状态下的所有满足条件的元素的平均值。只要我们知道之前所有元素的平均值和元素的个数

这个方法只需要遍历一次就计算出平均值,缺点是我们做了更多的计算每一次当元素满足条件,都要做乘法和除法而不是最后才做一次除法。不过咜使用了更少的内存,因为没有中间的数组的和和平均值变量我们只是记录了一个仅仅有两个元素的对象。

这样写还有一个缺点代码┅点都不直观,后续维护麻烦至少一眼看过去不能理解它是做什么的。

所以到底哪一种方案才是最好的呢?视情形而定也许你有一個很大的数组的和和平均值要处理,也许你的代码需要在内存很小的硬件上跑在这些场景下,使用第 5 个方案最佳如果性能不是问题,那么就算使用最低效的方法也没问题你需要选择最适合的。

还有一些聪明的朋友会思考:是否可以将问题拆解为子问题仍然只遍历一佽呢?是的确实有。需要使用 transducer

自从2016年双十一正式上线,Fundebug累计处理了10亿+错误事件付费客户有Google、360、金山软件、百姓网等众多品牌企业。歡迎大家!

转载时请注明作者以及本文地址:

}

建议这里的答案都没有检查长喥=== 0,你将来会在某种情况下除以零我建议你经常检查数学边界条件。相关文章有一个回应() 如果你想要安全,这是另一个例子

只需迭玳值,将它们相加然后返回sum的值除以条目数。

}

我要回帖

更多关于 数组的和和平均值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信