Ruby on rails rails中对象的动态组数组

Ruby on rails rails中对象的动态组数组,ruby-on-rails,arrays,Ruby On Rails,Arrays,我正试图找到最快的方式来组织要在我的视图中显示的内容集合 我有两种内容:小的和大的。小字体的大小是一个块,大字体的大小是两个块 我的页面宽度可以保持3个总块的空间,我不想要空闲空间 我试着展示一下情况 [--,-,--,-,-,-,--,-,-,--,--,-] 这是我的数组,-是一个大类型,-是一个小类型 我需要获得这个可视化 --|- --|- -|-|- --|- --|- -- 第一排很简单,我有一个大的和一个小的,所以没关系,我可以去第二排。 第二行我有2+1,所以没问题。 第三排

我正试图找到最快的方式来组织要在我的视图中显示的内容集合

我有两种内容:小的和大的。小字体的大小是一个块,大字体的大小是两个块

我的页面宽度可以保持3个总块的空间,我不想要空闲空间

我试着展示一下情况

[--,-,--,-,-,-,--,-,-,--,--,-]
这是我的数组,
-
是一个大类型,
-
是一个小类型

我需要获得这个可视化

--|-
--|-
-|-|-
--|-
--|-
--
第一排很简单,我有一个大的和一个小的,所以没关系,我可以去第二排。 第二行我有2+1,所以没问题。 第三排我有小的,小的和大的。哎呀,我只有3个区块的空间,所以我必须跳过大的(最后一个),而取我在阵列中找到的第一个小的。 我跳过的大的和第一个小的一起排在第四排

逻辑是这样的,有没有办法快速有效地重新排列我的数组?当然,数组中的每个对象都有一个类型为的属性。

一种方法可以是:

  • 按大小递减对项目进行排序
  • 弹出第一个可用项
  • 迭代以查找符合行上剩余空间的第一项
  • 如果行中有更多空间,请重复3
  • 去2号
  • ari=%w(-----------)
    行=[]]
    直到空了?
    row_length=rows.last.join.length
    案例行长度
    当3
    排
    
    ary = %w(-- - -- - - - -- - - -- -- - -- -- -- -- --)
    rows = [[]]
    
    until ary.empty?
      row_length = rows.last.join.length
      case row_length
      when 3
        rows << []
      when 2
        if ary.first == '--'
          # peak ahead and consume next small element
          n = ary.index { |each| each == '-' }
          next rows << [] unless n
          next rows.last << ary.delete_at(n)
        end
      end
      rows.last << ary.shift
    end
    
    p rows