首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据值将数组拆分为子数组

根据值将数组拆分为子数组
EN

Stack Overflow用户
提问于 2011-01-26 08:21:56
回答 5查看 16.8K关注 0票数 21

我正在寻找Ruby Core中与数组等效的String#split,并惊讶地发现它并不存在。有没有比下面更好的方法来根据值将一个数组分成多个子数组?

代码语言:javascript
运行
复制
class Array
  def split( split_on=nil )
    inject([[]]) do |a,v|
      a.tap{
        if block_given? ? yield(v) : v==split_on
          a << []
        else
          a.last << v
        end
      }
    end.tap{ |a| a.pop if a.last.empty? }
  end
end

p (1..9 ).to_a.split{ |i| i%3==0 },
  (1..10).to_a.split{ |i| i%3==0 }
#=> [[1, 2], [4, 5], [7, 8]]
#=> [[1, 2], [4, 5], [7, 8], [10]]

编辑:对于那些感兴趣的人来说,引发这个请求的“现实世界”问题可以在this answer中看到,我在这里使用了@fd的答案来实现。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4800337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档