ruby - 您如何从一系列房屋中简明扼要地得出平均房价?

标签 ruby arrays average

假设@houses 数组设置如下:

house1.price = 10
house2.price = 20
house3.price = 30
@houses << house1
@houses << house2
@houses << house3

这是我们计算的起点,我们想要找到房屋的平均价格:

total = 0
average = 0
for h in @houses
 total += h.price
end
average = total/@houses.size

为了获得平均值,这似乎需要大量输入。

有没有更好的办法?

最佳答案

使用 inject可枚举集合上的方法。 Inject 允许您为“累加器”传递一个初始值(在本例中为 0),然后对列表中的每个元素应用一些操作,并为累加器返回一个新值以传递到下一次迭代。

累加器的最终值随后从 inject 调用中返回。

所以在这种情况下,我们只是将所有房价加到累加器中,然后最后除以总数。

您可以使用一些 Ruby skillz 变得更有趣,并可能将其压缩得更多,但这是可以理解的,并且只遍历列表一次以将值相加。

@houses.inject(0){|total, house| total + house.price} / @houses.size

关于ruby - 您如何从一系列房屋中简明扼要地得出平均房价?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1169099/

相关文章:

ruby-on-rails - Rails - 如何选择表格中的最后一个日期?

sql - Rails 动态 'Where' 子句

javascript - 如何通过点击从数组中获取不重复的随机字符串?

Python numpy 平均

javascript - 计算平均值时如何从数组中排除零值?

sql - SQL AVG返回一个int

ruby-on-rails - Rails - 共享数据库和模型

ruby-on-rails - Ruby On Rails 5,activerecord 查询,其中模型关联 ID 包含数组中的所有 ID

arrays - Zapier Webhooks 发布 Json 数组

java - mySQL数据库结构