Руби: Как я могу сделать эти объекты одинаковыми?

Итак, у меня есть следующие хэши/массивы:

{"number"=>[{"tracking"=>"1Z81E74W0393736553", "notes"=>"Example note"}, {"tracking"=>"9102901001301227214058"}]}

{"number"=>{"tracking"=>"1Z81E74W0393736553", "notes"=>"Example note"}}

Этот первый хэш имеет массив для number, а второй — нет.

Это сеет хаос, пытаясь перебрать данные (особенно когда есть только одна комбинация отслеживания/заметок).

В конечном счете, я хочу иметь возможность выполнять цикл each для каждой комбинации отслеживания/заметок.


person Shpigford    schedule 19.03.2010    source источник


Ответы (2)


h1={"number"=>[{"tracking"=>"1Z81E74W0393736553", "notes"=>"Example note"}, {"tracking"=>"9102901001301227214058"}]}
h2={"number"=>{"tracking"=>"1Z81E74W0393736553", "notes"=>"Example note"}}
[h1["number"]].flatten
  => [{"notes"=>"Example note", "tracking"=>"1Z81E74W0393736553"}, {"tracking"=>"9102901001301227214058"}]
[h2["number"]].flatten
  => [{"notes"=>"Example note", "tracking"=>"1Z81E74W0393736553"}]

Теперь каждый из них будет массивом хэшей, и вы можете использовать each для их перебора.

person bta    schedule 19.03.2010

Что-то вроде этого?

hash["number"] = [ hash["number"] ] unless hash["number"].kind_of?(Array)
person Alexander Malfait    schedule 19.03.2010