Ruby -- 散列数组,获取唯一值

Bor*_*bat 0 ruby arrays hash dictionary functional-programming

我有以下哈希数组:

persons = [
  {name: 'Mark', age: 28},
  {name: 'John', age: 45},
  {name: 'Sam', age: 34},
  {name: 'John', age: 34}
]
Run Code Online (Sandbox Code Playgroud)

我想获取 key 的唯一值数组name。在这种情况下应该是['Mark', 'John', 'Sam'].

这是我的解决方案:

names = []

persons.each do |person|
  names << person[:name] unless names.include? person[:name]
end
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点?

Dan*_*sky 6

您可以组合mapuniq

persons = [
  {name: 'Mark', age: 28},
  {name: 'John', age: 45},
  {name: 'Sam', age: 34},
  {name: 'John', age: 34}
]

persons.map { |p| p[:name] }.uniq #=> ["Mark", "John", "Sam"]
Run Code Online (Sandbox Code Playgroud)