我有两个数组,一个是二维的,另一个是一维的:
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,但这对我不起作用。
提前致谢。
答案 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和交集(&)。