【问题标题】:How to cycle through multidimensional array in rails如何在rails中循环遍历多维数组
【发布时间】:2016-12-13 01:32:10
【问题描述】:

我正在我的项目中实施 searchkick 并让搜索正常工作。现在我试图实现一个过滤系统并使用 aggs 来显示过滤条件。 aggs 返回的数组对我来说有点复杂,我试图弄清楚如何循环遍历特定部分。这是它返回的 aggs:

{"技术"=>{"doc_count_error_upper_bound"=>0, "sum_other_doc_count"=>0, "buckets"=>[{"key"=>"油炸", "doc_count"=>1}, {"key"=>"灼热", "doc_count"=>1}]}, "配料"=>{"doc_count_error_upper_bound"=>0, "sum_other_doc_count"=>0, "buckets"=>[{"key"=>"Furikake, 用于服务", "doc_count"=>1}, {"key"=>"犹太盐和黑胡椒粉", "doc_count"=>1}, {"key"=>"三文鱼片", "doc_count"=>1}, {"key"=>"鳄梨,切丁", "doc_count"=>1}, {"key"=>"熟白 rice", "doc_count"=>1}, {"key"=>"japanese cucumber", "doc_count"=>1}, {"key"=>"照烧酱", "doc_count"=>1}, {"key"=>"到 8 个葱, 切成薄片", "doc_count"=>1}, {"key"=>"植物油", "doc_count"=>1}]}, "菜品"=>{"doc_count_error_upper_bound"=>0, "sum_other_doc_count"=>0, "buckets"=>[{"key"=>"亚洲", "doc_count"=>1}, {"key"=>"日语", "doc_count"=>1}]}}

我将如何编写一个 do 循环来循环遍历美食部分并从存储桶中提取各个名称和计数:

"美食"=>{"doc_count_error_upper_bound"=>0, "sum_other_doc_count"=>0, "buckets"=>[{"key"=>"亚洲", "doc_count"=>1}, {"key"=>"日语", "doc_count"=>1}]}}

所以基本上我想要一个如下所示的列表: 亚洲人(1) 日语(1)

【问题讨论】:

    标签: ruby-on-rails multidimensional-array


    【解决方案1】:

    你所拥有的是一个带有数组元素的散列。这取决于你到底想要什么,但假设你为它分配了一个变量my_hash,你可以这样做:

    my_hash['cuisines']['buckets'].reduce('') do |r, h| 
      r += "#{h['key']} (#{h['doc_count']}) "
    end
    => "Asian (1) Japanese (1) "
    

    【讨论】:

      猜你喜欢
      • 2013-08-15
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      相关资源
      最近更新 更多