迭代一组对象

时间:2017-04-22 09:51:03

标签: arrays ruby iteration ruby-hash

我在对象中有一个对象数组,并尝试缩减为特定形式的数组。例如:

[
  #<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>>
]

应该减少到

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

我试过了

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

上述代码的输出是

[ 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它应该只对val1和val2仅对于Item1。

1 个答案:

答案 0 :(得分:4)

我会从这样的事情开始:

array.map do |element|
  [element.name, [element.value.quantity, element.value.quality]]
end