ruby-on-rails - Rails 平均值 - 仅在值 <> 0 时收集

标签 ruby-on-rails ruby-on-rails-3

我使用此代码来计算一些数字的平均值 - 请注意,rankings 列已序列化并包含哈希:

@reviews.collect{|review| review.rankings[label].to_i}.sum.to_f/@reviews.length if @reviews.length > 0

此代码的缺点是:如果其中一个值为nil,则计算平均值时就好像它以零存在一样。问题基本上是 @reviews.length 分母假设每条评论都有相关值。

如何从分母中排除那些不重要的评论?


非常感谢您的回答。问题最终出在分母上,即 /@reviews.length 部分。当我在分子和分母上使用 reject 时,方程停止除以总长度并开始除以(长度 - nils 数)。

最终结果 - 2 个分数 [0 和 100] 平均为 50; [nil 和 100] 平均为 100。

最佳答案

Array#reject来救援。

@reviews.reject{|review| review.rankings[label].nil?}.collect{|review| review.rankings[label].to_i}.sum.to_f/@reviews.length if @reviews.length > 0

关于ruby-on-rails - Rails 平均值 - 仅在值 <> 0 时收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5301646/

相关文章:

ruby-on-rails - 在Rails中测试防止伪造的 Controller 方法

ruby-on-rails - 在 Redis 中进行高效的数学计算

ruby-on-rails - 如何在没有类别 Controller 的情况下将类别添加到 Rails 中的帖子

ruby-on-rails - Rails3 在 json 更新后用 js 响应

ruby-on-rails - 是否可以在 activeadmin 的侧边栏中访问完整的索引范围?

ruby-on-rails - Rails 3 +Devise + RSpec : undefined method 'visit'

ruby-on-rails - 在 Rails 中强制内联呈现 PDF 文档

ruby-on-rails - Heroku 跟踪唯一请求 Id

ruby-on-rails-3 - 样式占位符与 best_in_place 的值不同

ruby-on-rails-3 - Ruby On Rails 与 HTML5 和 CSS3