我有以下哈希数组
input = [
{'line_number' => 1, 'name' => 'Name1', 'value' => 'Value'},
{'line_number' => 1, 'name' => 'Name2', 'value' => 'Value'},
{'line_number' => 2, 'name' => 'AnotherName', 'value' => 'AnotherValue'}
]
我想,在检查唯一性之后,输出将是
output = [
{'line_number' => 1, 'name' => 'Name2', 'value' => 'Value'},
{'line_number' => 2, 'name' => 'AnotherName', 'value' => 'AnotherValue'}
]
因为简单的唯一性
input.uniq! { |i| i['line_number'] }给我
output = [
{'line_number' => 1, 'name' => 'Name1', 'value' => 'Value'},
{'line_number' => 2, 'name' => 'AnotherName', 'value' => 'AnotherValue'}
]
提前致谢。
答案 0 :(得分:1)
如果你想保留最后一个,你可以这样做
input.each_with_object({}) {|h, obj| obj[h['line_number']] = h}.values
# => [{"line_number"=>1, "name"=>"Name2", "value"=>"Value"},
# => {"line_number"=>2, "name"=>"AnotherName", "value"=>"AnotherValue"}]
答案 1 :(得分:0)
非常奇怪的问题,但是,也许,它可以帮到你:
input.group_by { |i| i['line_number'] }.values.map! { |i| i.last }
答案 2 :(得分:0)
如果你想保留最后一个而不是第一个,为什么不简单
input.reverse.uniq { |i| i['line_number'] }
答案 3 :(得分:0)
input.each_with_object({}) { |g,h| h.update(g['line_number']=>g) }.values
#=> [{"line_number"=>1, "name"=>"Name2", "value"=>"Value"},
# {"line_number"=>2, "name"=>"AnotherName", "value"=>"AnotherValue"}]