如何在轨道中组合2个阵列,以便没有重复

时间:2017-06-26 06:41:27

标签: ruby-on-rails arrays ruby

考虑我有2个阵列,

o = ["16", "16", "119"]
d = ["97", "119", "97"]

需要的输出是这样的:

{16=>[97, 119], 119=>[97]}

我尝试使用.zip,但它没有用。我该怎么做?

3 个答案:

答案 0 :(得分:4)

首先想到的是:

result = Hash.new { |h, k| h[k] = [] }
o.zip(d) { |a, b| result[a] << b }
result #=> {"16"=>["97", "119"], "119"=>["97"]}

虽然可能有更好的方法,但这应该让你思考。

答案 1 :(得分:4)

您可以链接group_bywith_index,将d中的元素按o中的相应元素分组:

d.group_by.with_index { |_, i| o[i] }
#=> {"16"=>["97", "119"], "119"=>["97"]}

要获得整数,您必须添加一些to_i次呼叫:

d.map(&:to_i).group_by.with_index { |_, i| o[i].to_i }
#=> {16=>[97, 119], 119=>[97]}

答案 2 :(得分:3)

self.endDate = endDate.addingTimeInterval(difference!)