Перейти к содержимому

Фото
- - - - -

Как упорядочить array of hashes в порядке другого масива

ruby arrays hash

  • Вы не можете создать новую тему
  • Please log in to reply
2 ответов в этой теме

#1 arthur1981

arthur1981
  • Новобранец
  • 14 сообщений

Отправлено 16 сентября 2014 - 17:53

Добрый день! У меня есть два масива один с хашами a другой с ключами этих хашей, как сделать что бы масив с хашами стал в таком же порядке как масив с ключами?

header = ["header1", "header2", "header3", "header4", "header5"]
record = [{"header4" =>"value4"}, {"header3" =>"value3"}, {"header5"=>"value5"}, {"header1"=>"value1"}, {"header2"=>"value2"}]

мне нужно что бы масив record был в таком же порядке как масив header

record = [{"header1" =>"value1"}, {"header2" =>"value2"}, {"header3"=>"value3"}, {"header4"=>"value4"}, {"header5"=>"value5"}]

Благодарю за помощь!


  • 0

#2 djeux

djeux
  • Постоялец
  • 7 517 сообщений
  • Откуда:Tallinn, Kristiine

Отправлено 16 сентября 2014 - 18:04

Если не заморачиваться:

sorted = [];
for each (header as h) {
   sorted[h] = record[h];
}

Хотя если исходные данные именно так организованы как в посте, то это работать не будет.


Сообщение изменено: djeux (16 сентября 2014 - 18:08 )

  • 1

Мужчина без женщины - всё равно, что дерево без гусеницы. © не Gra4-а, ему знакомый сказал


#3 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 16 сентября 2014 - 19:44

record.sort_by { |r| r.keys } ?


  • 1

Вначале делаю, потом думаю :)