Рубин:Как я могу сделать эти объекты одинаковыми?
Вопрос
Итак, у меня есть следующие хэши / массивы:
{"number"=>[{"tracking"=>"1Z81E74W0393736553", "notes"=>"Example note"}, {"tracking"=>"9102901001301227214058"}]}
{"number"=>{"tracking"=>"1Z81E74W0393736553", "notes"=>"Example note"}}
Этот первый хэш содержит массив для number
в то время как второй этого не делает.
Это сеет хаос, пытаясь перебирать данные (особенно когда есть только одна комбинация отслеживания / заметок).
В конечном счете, я хочу иметь возможность делать each
зацикливайтесь на каждой комбинации отслеживания / заметок.
Решение
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
чтобы перебрать их.
Другие советы
Что-то вроде этого?
hash["number"] = [ hash["number"] ] unless hash["number"].kind_of?(Array)
Не связан с StackOverflow