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

StackOverflow https://stackoverflow.com/questions/2479901

  •  21-09-2019
  •  | 
  •  

Вопрос

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

{"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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top