2017-04-22 16 views
0

オブジェクトの配列があり、特定の形式の配列に縮小しようとしています。例えば:オブジェクトの配列全体を反復する

[ 
    #<Item name: "Item 1", content: #<Item value: #<Item quantity: val1>, #<Item 
quality: val2>>, 
    #<Item name: "Item 2", content: #<Item value: #<Item quantity: val1>, #<Item 
quality: val2>>, 
    #<Item name: "Item 3", content: #<Item value: #<Item quantity: val1>, #<Item 
quality: val2>>, 
    #<Item name: "Item 4", content: #<Item value: #<Item quantity: val1>, #<Item 
quality: val2>>, 
    #<Item name: "Item 5", content: #<Item value: #<Item quantity: val1>, #<Item 
quality: val2>> 
] 

私は

arr1 = [] 
arr2 = [] 
array.each do |array| 
arr1 << array.name 
    arr2 << array.value.quantity 
    arr2 << array.value.quality 
    arr1 << arr2 
end 

を試みた

[ [Item1, [val1, val2]], [Item2, [val1, val2]], [Item3, [val1, val2]], [Item4, 
[val1, val2]], [Item5, [val1, val2]]] 

に低減されなければならない

上記のコードの出力は

[ Item1, [val1,val2,val1,val2,val1,val2,val1,val2,val1,val2,val1,val2], 
Item2, [[val1,val2,val1,val2,val1,val2,val1,val2,val1,val2,val1,val2]....] 

このコードの問題ですオブジェクトごとの反復を停止しません私が意味することはItem1のためだけですItem1のためのval1とval2だけでなければなりません。私はこのような何かを始めるでしょう

+0

は、アイテムがデータベースクエリの結果をオブジェクトですか?私はこれを尋ねます。配列を取得したい場合、これは 'pluck'で行わなければなりません。 – marmeladze

+0

いいえ、itemsオブジェクトはデータベースクエリの結果ではありません。 – rekha

答えて

4

array.map do |element| 
    [element.name, [element.value.quantity, element.value.quality]] 
end 
関連する問題