从哈希中删除重复项?

时间:2013-03-23 17:00:03

标签: ruby-on-rails ruby

我有一个像:

这样的数组
[
  #<ArtLookup ARL_ART_ID: 1248525, ARL_SEARCH_NUMBER: "4502696", ARL_KIND: 3, ARL_BRA_ID: 569, ARL_DISPLAY_NR: "4502696", ARL_DISPLAY: nil, ARL_BLOCK: 1, ARL_SORT: 1>, 
  #<ArtLookup ARL_ART_ID: 1248525, ARL_SEARCH_NUMBER: "5009285", ARL_KIND: 3, ARL_BRA_ID: 525, ARL_DISPLAY_NR: "5009285", ARL_DISPLAY: nil, ARL_BLOCK: 1, ARL_SORT: 1>,
  #<ArtLookup ARL_ART_ID: 1248525, ARL_SEARCH_NUMBER: "5016786", ARL_KIND: 3, ARL_BRA_ID: 525, ARL_DISPLAY_NR: "5016786", ARL_DISPLAY: nil, ARL_BLOCK: 2, ARL_SORT: 1>,
  ...
]

如何从此哈希数组中删除重复值?

arr.uniq没有帮助我。

我需要删除ARL_DISPLAY_NR字段的重复项。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

这不是哈希的意思,你可能会以O(n)的复杂性来实现这一目标。要求这样做可能表明您的模型中存在设计问题。

那就是说,你可以使用类似的东西:

hash = {key1: 'val1', key2: 'val2', key3: 'val3', repkey: 'val1'}
uniquevalues = {}
hash.each do |key, value|
  uniquevalues[value] = key
end

获取唯一值。

{“val1”=&gt;:repkey,“val2”=&gt;:key2,“val3”=&gt;:key3}

答案 1 :(得分:0)

假设您可以从ARL_DISPLAY_NR的{​​{1}}实例中检索art字段,如下所示:

ArtLookup

然后,您可以根据art[:ARL_DISPLAY_NR] 字段删除重复项:

ARL_DISPLAY_NR

但是,它不保证在原始数组中保留原始顺序。