2013-01-02 76 views
0

我不得不遍历一些JSON字符串,这是它的样子:如何优化这个迭代(ruby)?

parsed.each do |a| 
a.each do |b| 
    if(b.class == Array) 
    b.each do |c| 
    c["attributes"].each do |d| 
     p d 
    end 
    end 
    end 
end 
end 

任何人可以帮助我把这个在一个或两行呢?提前致谢!

基督教

+1

你可以发布一个示例输入和输出? –

+0

codereview.stackexchange.com是适合此类问题的网站。 –

+0

代码评论(http://codereview.stackexchange.com)更适合优化/改进代码。 – g00glen00b

回答

1
parsed.flatten.each do |c| 
    c["attributes"].each { |d| p d } 
end 

Array#flattenArray#flatten!就地平整

+1

更改为: parsed.each do | a,b | if(b.class == Array) b.flatten.each do | c | c [“attributes”]。each {| d | p d} 结束 结束 结束 看起来很不错,现在:) – cjohannsen

2

以下约尔格W¯¯米塔格的建议编辑。

p(*parsed.grep(Array).flat_map{|c| c["attributes"]}) 
+1

提示:只要你有'select'和''===,只要使用'grep'代替。 'grep'使用'==='。所以,只要执行'grep(Array)'。 –

+0

@JörgWMittag谢谢。这很有帮助。 – sawa