Как «трансформировать» массив хешей, чтобы вы могли настроить логику для доступа к его данным? - PullRequest
1 голос
/ 12 марта 2011

Я использую Ruby on Rails 3, и я хотел бы "преобразовать" следующий массив, чтобы я мог использовать свою собственную логику для доступа к его данным.

Это исходный массив, из которого я должен построить новый

[
  {
    "account" => {
       "id"   => 45, 
       "name" => "Test_name", 
       "..."  => ..."
     }
   }, 
   {
     "other"  => {
       "sub_other" => {...}
     }
   }
]

Я бы хотел преобразовать вышеуказанный массив, чтобы я мог сделать в моем контроллере что-то вроде

array_name[45]
# => {
       "name" => "Test_name", 
       "..."  => ..."
      }

, но только для account хешей . Хэш other должен остаться нетронутым.

Как я могу приступить к созданию нового массива?

1 Ответ

0 голосов
/ 12 марта 2011

Если я правильно понимаю ваши требования, я думаю, что вам лучше создать хеш от идентификатора аккаунта до данных аккаунта. Возможно, что-то подобное будет работать:

arr = [
  {
    "account" => {
       "id"   => 45, 
       "name" => "Test_name", 
       "..."  => "..."
     }
   }, 
   {
     "other"  => {
       "sub_other" => "..."
     }
   }
]

account_hashes = arr.select {|item| item.keys.first == "account"}

answer = account_hashes.inject({}) do |acc, item| 
    acc[item["account"].delete("id")] = item["account"]
    acc
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...