Ruby on Rails中的数组比较

时间:2013-08-04 14:35:09

标签: ruby-on-rails ruby arrays

我有两个数组,一个是二维的,另一个是一维的:

array1 = [["San Francisco", 8], ["New York", 3], ["Madison", 2], ["Washington", 3], ["Tulsa", 3]]

array2 = ["Durham", "Rochester", "New York", "Tulsa", "Kenner", "Washington", "Linton", "Kansas City", "San Francisco", "Madison"]

我想在两个数组中比较城市名称存在的数组,并在第一个数组中显示总用户数(第二个元素),如果城市不在第一个数组中,则显示0。

输出应该是这样的:

Durham (0)
Rochester (0)
New York (3)
Tulsa(3)
Kenner (0)
Washington (3)
...

我如何在Rails中实现这一目标?

编辑: 实际上我已经尝试使用array1-array2来获取差异并将差异添加到array1并使用第二个值0,但这对我不起作用。

提前致谢。

3 个答案:

答案 0 :(得分:2)

array1是转换为哈希的完美候选人。

h=Hash[array1]
array2.each{|city| puts "%s(%d)" % [city, h[city]||0] }

答案 1 :(得分:1)

使用Array#assoc

array1 = [["San Francisco", 8], ["New York", 3], ["Madison", 2], ["Washington", 3], ["Tulsa", 3]]
array2 = ["Durham", "Rochester", "New York", "Tulsa", "Kenner", "Washington", "Linton", "Kansas City", "San Francisco", "Madison"]

mapping = Hash[array1]
mapping.default = 0
array2.each do |city|
  puts "#{city} (#{mapping[city]})"
end

答案 2 :(得分:0)

我建议查看数组uniq和交集(&)。