Распечатать массив хэшей, упорядоченный по ключу хеша - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть такой массив хэшей

{'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 голосов
/ 26 сентября 2018

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"]]

Я полагаю, вывсе еще хочу, чтобы он был в хеше, но это не присущая хэшу функциональность иметь заказанные ключи.

0 голосов
/ 26 сентября 2018
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...