ruby - 当值更改时将数组拆分为子数组并忽略/删除该值

tre*_*al7 3 ruby arrays split sub-array

我想将以下数组拆分为子数组,以便子数组在 1 的开始和结束时开始和结束...

a=[1,1,0,0,1,0,1,1,1]
Run Code Online (Sandbox Code Playgroud)

所以我最终将其作为一个新数组......

=>  [[1,1],[1],[1,1,1]]
Run Code Online (Sandbox Code Playgroud)

有人有什么想法吗...?

Sid*_*Sid 5

最简单且最易读的方法可能是:

a.chunk {|x| x==1 || nil}.map(&:last)
  #=> [[1, 1], [1], [1, 1, 1]]
Run Code Online (Sandbox Code Playgroud)

如果您可以使用 Ruby on Rails,则可以使用更简单的解决方案:

a.split(0).reject(&:empty?)
  #=> [[1, 1], [1], [1, 1, 1]]
Run Code Online (Sandbox Code Playgroud)