-2

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

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 但这对我不起作用。

提前致谢。

4

3 回答 3

2

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

h=Hash[array1]
array2.each{|city| puts "%s(%d)" % [city, h[city]||0] }
于 2013-08-04T14:37:43.590 回答
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
于 2013-08-04T14:37:43.640 回答
0

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

于 2013-08-05T15:10:39.627 回答