Ruby:基于指定顺序的哈希的concat字段?

Hop*_*eam 1 ruby ruby-on-rails

data = {"B"=>"bb", "C"=>"cc", "A"=>"aa", "D"=>"dd", "E"=>"", "F"=>nil}
fields_to_select = ["A", "B", "C"]
str = data.select { |elem| fields_to_select.include? elem }.values.compact.reject(&:empty?).join(', ')
Run Code Online (Sandbox Code Playgroud)

这将返回,bb, cc, aa因为这是它在数据哈希中的顺序.

有没有办法根据顺序创建字符串fields_to_select

这样它就会回归 aa, bb, cc

Aru*_*hit 6

是的......可以使用 Hash#values_at

data = {"B"=>"bb", "C"=>"cc", "A"=>"aa", "D"=>"dd", "E"=>"", "F"=>nil}
fields_to_select = ["A", "B", "C"]
data.values_at(*fields_to_select).join(', ')
# => "aa, bb, cc"
Run Code Online (Sandbox Code Playgroud)