2011-11-18 120 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'] } ]