2012-05-10 17 views
0

У меня есть следующий Hash -Извлечение массива из Руби Hash

{ result: [ {id: 378, name: 'Pete'}, {id: 567, name: 'Pete'} ] }

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

[378, 567]

Что кратчайшее способ сделать это, кроме прокрутки массива результатов. Это метод карты для этого, но я не совсем уверен, как его использовать.

Справка приветствуется.

ответ

3

Это map способ довольно удобный. Если ваш вход выглядит следующим образом:

input = { :result => [ {:id => 378, :name => 'Pete'}, {:id => 567, :name => 'Pete'} ] } 

Вы можете извлечь ids как так:

ids = input[:result].map{ |obj| obj[:id] } 

puts ids.inspect 

Check it out.

+0

Для некоторых методов 'collect' чувствует себя более интуитивно.) – ok32

+0

@ ok32 Вы говорите, картофель, я говорю ... хорошо..потато. Справедливая точка: ^) – rjz

0

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

a = { result: [ {id: 378, name: 'Pete'}, {id: 567, name: 'Pete'} ] } 
    i= [0,1] 
    output_value = [] 
    for b in i 
      output_value << a.values[0][b][:id] 
    end 

    output_value 
Смежные вопросы