Ruby使用each_slice.to_a

Jgl*_*art 6 ruby each

我正在尝试将数组细分为数组对.

例如:["A","B","C","D"]应该成为[["A","B"],["C","D"].

我相信我已经成功了arg.each_slice(2).to_a.但是,如果我arg.length在新阵列上做的话,我仍然会得到4.我希望得到2(在上面的例子中).

最后,我希望能够调用的第一个元素arg是["A","B"],但在此刻,我仍然得到"A".

Fle*_*oid 19

array = ["A", "B", "C", "D"]

array
 => ["A", "B", "C", "D"]

array.each_slice(2).to_a
 => [["A", "B"], ["C", "D"]]

array.each_slice(2).to_a.length
 => 2
Run Code Online (Sandbox Code Playgroud)

也许你期望array.each_slice(2).to_a会改变你的原创array,但在这里你会有新的Array对象,因为each_slice它是非破坏性的方法,就像红宝石中的大多数一样.

new_array = array.each_slice(2).to_a
new_array
 => [["A", "B"], ["C", "D"]]
new_array[0]
 => ["A", "B"]
Run Code Online (Sandbox Code Playgroud)