如何从哈希数组中提取

时间:2021-06-04 11:27:00

标签: ruby

people = [
    {id: 101, first_name: 'John', last_name: 'Doe'},
    {id: 102, first_name: 'Tom', last_name: 'Rogers'},
    {id: 103, first_name: 'Bill', last_name: ''}
]

我想放一个这样的名字列表

"John Doe, Tom Rogers, Bill"

我如何在 ruby​​ 中实现这一点?

3 个答案:

答案 0 :(得分:1)

输入

people = [
  { id: 101, first_name: 'John', last_name: 'Doe' },
  { id: 102, first_name: 'Tom', last_name: 'Rogers' },
  { id: 103, first_name: 'Bill', last_name: '' }
]

代码

p people.map { |x| x[:first_name].to_s + ' ' + x[:last_name].to_s }
        .map(&:strip)
        .join(",")

输出

"John Doe,Tom Rogers,Bill"

答案 1 :(得分:0)

我愿意

people
  .map { |p| p.values_at(:first_name, :last_name).join(' ').strip }
  .join(', ')
#=> "John Doe, Tom Rogers, Bill"

people
  .map { |p| "#{p[:first_name]} #{p[:last_name]}".strip }
  .join(', ')
#=> "John Doe, Tom Rogers, Bill"

答案 2 :(得分:0)

其他答案很好,但我想添加字符串插值的演示。

people
  .map { |p| "#{p[:first_name]} #{p[:last_name]}" }
  .join(", ")

@rajagopalan 有一个好主意,使用 strip 删除名字和姓氏组合开头和结尾处不需要的空格,但在名称的每个组成部分上运行它可能会更好。< /p>

people
  .map { |p| "#{p[:first_name].strip} #{p[:last_name].strip}" }
  .join(", ")
相关问题