让我们说我有一个数组数组
aoa = [1, 2, [3, 4], 5, [6, 7, 8], 9]
Run Code Online (Sandbox Code Playgroud)
我想将数组和单个元素提取为如下所示的数组
[[1,2,5,9],[3,4],[6,7,8]] #=>order is not important
Run Code Online (Sandbox Code Playgroud)
我试过这个,但不知道如何处理个别元素
aoa.map{|i| i if i.kind_of?(Array)}.compact #=> [[3, 4], [6, 7, 8]]
Run Code Online (Sandbox Code Playgroud)
你可以使用分区 (和splat@CarySwoveland所指的运算符)
a, i = aoa.partition{ |i| i.is_a? Array }
# => [[[3, 4], [6, 7, 8]], [1, 2, 5, 9]]
[*a, i]
# => [[3, 4], [6, 7, 8], [1, 2, 5, 9]]
Run Code Online (Sandbox Code Playgroud)