Demigodd
@Demigodd

Как оптимизировать и сократить код (hash parsing in ruby)?

Собственно вот ссылка на код REPL.it

Там есть hash:
[
  {
    part: 'one',
    books: {
      rowling: {book: 'Harry Potter', year: 1997},
      martin: {book: 'Game of Thrones', year: 2011},
    }
  },
  {
    part: 'two',
    books: {
      rowling: {book: 'Harry Potter', year: 1997},
      martin: {book: 'Game of Thrones', year: 2011},
      tolkin: {book: 'The Lord of the Ring', year: 2001}
    }
  },
]


Мне нужно парсить так что бы получить вот такой результат:
# Expect Result Output после uniq и сортировки по author
{:author=>:martin, :book=>"Game of Thrones"}
{:author=>:rowling, :book=>"Harry Potter"}
{:author=>:tolkin, :book=>"The Lord of the Ring"}


Есть какие-нибудь идеи, как коротко и производительнее это реализовать?
Функцию которую я написал, использую аж 3 перебора по массиву (map, each, each) и в конце sort_by...
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
0xD34F
@0xD34F
arr
  .reduce({}){|acc, n| acc.update(n[:books])}
  .collect{|k, v| { author: k, book: v[:book] }}
  .sort_by{|n| n[:author]}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы