Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 组合多个数组/哈希选择_Ruby_Arrays_Hash - Fatal编程技术网

Ruby 组合多个数组/哈希选择

Ruby 组合多个数组/哈希选择,ruby,arrays,hash,Ruby,Arrays,Hash,我有以下代码: sum = array_of_hashes.select{ |key| (date_range).include? Date.parse(key[:created])}.map { |h| h[:amount] }.sum size = array_of_hashes.select{ |key| (date_range).include? Date.parse(key[:created])}.size total = sum / size sum选择日期在日期范围内的所有哈希

我有以下代码:

sum = array_of_hashes.select{ |key| (date_range).include? Date.parse(key[:created])}.map { |h| h[:amount] }.sum 
size = array_of_hashes.select{ |key| (date_range).include? Date.parse(key[:created])}.size
total = sum / size
sum
选择日期在日期范围内的所有哈希值,并将
:amount
键的所有值相加

size
统计日期范围内的哈希数

total
总和
除以
大小


我怎样才能把它们结合起来,使它不再是三个独立的项目呢?

我认为它很简单:

selected = array_of_hashes.select { ... }
avarage = selected.map { ... }.sum / selected.size

注意:对日期范围使用
include?
效率很低,因为它需要遍历整个日期范围,我建议改用
cover?

我认为它非常简单:

selected = array_of_hashes.select { ... }
avarage = selected.map { ... }.sum / selected.size

注意:对日期范围使用
include?
效率很低,因为它需要遍历整个日期范围,我建议改用
cover?

我认为它非常简单:

selected = array_of_hashes.select { ... }
avarage = selected.map { ... }.sum / selected.size

注意:对日期范围使用
include?
效率很低,因为它需要遍历整个日期范围,我建议改用
cover?

我认为它非常简单:

selected = array_of_hashes.select { ... }
avarage = selected.map { ... }.sum / selected.size

注意:对日期范围使用
include?
效率很低,因为它需要遍历整个日期范围,我建议改用
cover?

确实没有更紧凑的方法。一个备选方案可以是:

average = (selected = array_of_hashes.select { ... }.map { ... }).sum/selected.size.to_f

真的没有什么好方法可以让它更紧凑。一个备选方案可以是:

average = (selected = array_of_hashes.select { ... }.map { ... }).sum/selected.size.to_f

真的没有什么好方法可以让它更紧凑。一个备选方案可以是:

average = (selected = array_of_hashes.select { ... }.map { ... }).sum/selected.size.to_f

真的没有什么好方法可以让它更紧凑。一个备选方案可以是:

average = (selected = array_of_hashes.select { ... }.map { ... }).sum/selected.size.to_f


你知道在一行中实现这一点的方法吗(即使它牺牲了一点可读性)?为什么你想在一行中实现它?询问是否可能。我相信你做不到,别担心。不过,我很好奇这是否能做到。@sawa没什么可遗憾的!:-)<代码>封面?和
包含?
在端点为大小为1的
数字或
字符串时的行为几乎相同,在任何其他情况下
包含?
调用
可枚举#包含?
。在中,您可以找到更多信息。@sawa是的,C中的
rb\u call\u super
大致上是Ruby中的
super
。您知道在一行中实现这一点的方法吗(即使它牺牲了一点可读性)?为什么要在一行中使用它?询问是否可能。我相信你做不到,别担心。不过,我很好奇这是否能做到。@sawa没什么可遗憾的!:-)<代码>封面?
包含?
在端点为大小为1的
数字或
字符串时的行为几乎相同,在任何其他情况下
包含?
调用
可枚举#包含?
。在中,您可以找到更多信息。@sawa是的,C中的
rb\u call\u super
大致上是Ruby中的
super
。您知道在一行中实现这一点的方法吗(即使它牺牲了一点可读性)?为什么要在一行中使用它?询问是否可能。我相信你做不到,别担心。不过,我很好奇这是否能做到。@sawa没什么可遗憾的!:-)<代码>封面?
包含?
在端点为大小为1的
数字或
字符串时的行为几乎相同,在任何其他情况下
包含?
调用
可枚举#包含?
。在中,您可以找到更多信息。@sawa是的,C中的
rb\u call\u super
大致上是Ruby中的
super
。您知道在一行中实现这一点的方法吗(即使它牺牲了一点可读性)?为什么要在一行中使用它?询问是否可能。我相信你做不到,别担心。不过,我很好奇这是否能做到。@sawa没什么可遗憾的!:-)<代码>封面?
包含?
在端点为大小为1的
数字或
字符串时的行为几乎相同,在任何其他情况下
包含?
调用
可枚举#包含?
。在中,您可以找到更多信息。@sawayes,C中的
rb\u call\u super
大约是Ruby中的
super