【发布时间】:2014-03-01 10:04:19
【问题描述】:
我有两个数组:
a = [{:name=>"John Doe", :number=>"555-234-5678", :count=>30}, {:name=>"Jane Doe", :number=>"555-456-1234", :count=>12}, {:name=>"Kobie Bryant", :number=>"555-621-9876", :count=>8}, {:name=>"JD", :number=>"555-234-5678", :count=>3}, {:name=>"KB", :number=>"555-621-9876", :count=>6}]
b = [{:name=>"JD", :number=>"555-234-5678", :count=>3}, {:name=>"KB", :number=>"555-621-9876", :count=>6}]
当 a[:name] 的首字母匹配 b[:name] 并且 a[:number] 匹配 b[:number] 时,我想将两个计数的总和添加到 a[:count],然后删除任何a 数组中 b 中元素的实例。
所以 a 的结果是:
a = [{:name=>"John Doe", :number=>"555-234-5678", :count=>33}, {:name=>"Jane Doe", :number=>"555-456-1234", :count=>12}, {:name=>"Kobie Bryant", :number=>"555-621-9876", :count=>14}]
到目前为止,我有:
h = []
b.each do |double|
a.each do |conn|
if (double[:name][0,1] == conn[:name][0,1].split[0,1]) && (double[:name][1,1] == conn[:name][1,1].split[0,1])
h[double] += conn[:count] + b[:count]
a.delete(conn)
end
end
end
非常感谢任何帮助。谢谢大家!
【问题讨论】:
-
再次检查您的
a和b数组。输出没有说明确切的逻辑。怎么33这里{:name=>"John Doe", :number=>"555-234-5678", :count=>33}? -
John Doe 的数量 = 30 + JD 的数量 = 3。由于它们的数量相同,所以 John Doe 的数量就是总和。