【发布时间】:2015-05-11 10:52:23
【问题描述】:
更新:我设法重构了代码,但它仍然是一个嵌套循环。
我想我已经找到了一种使用map 和keep_if 改进代码的方法。我不知道它是否理想,因为它仍然是一个嵌套循环。
输出 = {}
array.map do |a|
output[a[0]] = another_array.dup.keep_if do |b|
a[1].include?(b["name"])
end
end
这是一个有点 n00b 的问题。我试图弄清楚如何重构嵌套的每个循环,如下所示,这样我就不会声明以后不需要的额外变量,从而使我的代码运行得更快。
some_array = [["one", 2, 3], ["two", 3, 4], ["three", 4, 5]]
output = {}
some_array.each do |a|
current_group = []
another_array.each do |b|
current_group << b if something == true
end
output[a[0]] = current_group
end
output 作为数组哈希返回。 some_array 是一个嵌套数组,其中每个子数组中的第一个元素是一个字符串,another_array 是一个哈希数组。
【问题讨论】:
-
你可能想要
.inject -
你的外循环怎么没有使用
a? -
什么是
something? -
something只代表一个条件,要么是真要么是假。 -
你的意思是
...if something == true(和...if something一样)?另外,您的预期或期望输出是什么?