打印按哈希键排序的哈希数组

时间:2018-09-26 10:32:27

标签: ruby hash

我有这样的哈希数组

{'id' => 'ID001', 'count' => 1}
{'id' => 'ID003', 'count' => 2}
{'id' => 'ID002', 'count' => 1}

我这样做是为了打印列表

myarray.each_with_index do |i, p|
    puts "\n #{p+1}) #{i['id']} n. #{i['count'].to_s}"
end

它运行完美,实际上,我得到了:

1) 'ID001' n. 1
2) 'ID003' n. 2
3) 'ID002' n. 1

是否可以通过"ID"键对哈希进行排序?

2 个答案:

答案 0 :(得分:3)

myarray.
  sort_by { |h| h['id'][/\d+/].to_i }.
  each.
  with_index(1) do |h, idx|
    puts ["\n", "#{idx})", h['id'], "n.", h['count']].join(' ')
  end

答案 1 :(得分:0)

my_array看起来像这样:

{"ID02"=>"xx", "ID01"=>"a", "ID00"=>"ba", "ID04"=>"zz"}

运行此命令时:

my_array.sort_by { |key, value| key }

输出将返回一个数组为:

[["ID00", "ba"], ["ID01", "a"], ["ID02", "xx"], ["ID04", "zz"]]

我猜您仍然希望它包含在哈希中,但是具有有序键并不是哈希的固有功能。