2011-11-18 198 views
0

我有一個對象數組(nokogiri xml nodes),每個節點都有namevalue。 我想以格式name=value的格式打印它們,而無需迭代for循環。紅寶石陣列打印

,如果我使用ARR *「」我能看到的只是值如下

4900.00,5.00,0.00,-100.00,100.00 
6085.00,5.00,1285.00,1185.00,100.00 
6015.00,5.00,30.00,-70.00,100.00 
5915.00,5.00,0.00,-100.00,100.00 
5815.00,5.00,0.00,-100.00,100.00 

有什麼可以在這裏完成。

+0

什麼'p arr'輸出? –

+0

@LBg放arr只返回值 – Manoj

+0

你有一些示例代碼來顯示你在做什麼嗎? –

回答

1

像這樣的東西應該工作:

array.each do |n| 
    puts "#{n.name}=#{n.value}" 
end 
+0

是的,我正在做類似的事情,我想我不能期望更多的數組而不改變數組中的對象的to_s。 – Manoj

+1

您可以使用'collect'在顯示數組之前轉換數組。 – tadman

1

假設你引入nokogiri節點有namevalue屬性(沒有子元素),這裏有一個方法:

# Convert the array into a new array of strings 
namevals = my_array.map{ |node| "#{node['name']}=#{node['value']}" } 

# See it with space delimiters 
puts namevals.join(' ') 

可能有用的替代方案:

# Create a hash mapping unique names to values 
namevals = Hash[ my_array.map{ |node| [ node['name'], node['value'] } ]