从Ruby 2D数组中删除第一个非零子数组元素

时间:2016-12-17 06:15:04

标签: arrays ruby

如果有一个数组,其中每个项目都是一个数组,但可以为空,例如:

a = [ [], [8, 6], [7, 5, 3, 0], [], [9] ]

可以通过以下方式删除第一个非零子数组元素:

a[a.index { |item| item != [] }].shift

a处于这种状态:

[ [], [6], [7, 5, 3, 0], [], [9] ]

是否有更简洁的方法在Ruby中表达这一点,是否将a.index { |item| item != [] }作为要删除的子数组的索引?

2 个答案:

答案 0 :(得分:3)

您可以使用Enumerable#find

a.find { |e| !e.empty? }.shift
=> 8
a
=> [[], [6], [7, 5, 3, 0], [], [9]]

答案 1 :(得分:0)

您可以使用空数组替换子数组。这适用于确切陈述的问题,但可能无法推断出您正在寻找的内容。

a.map{[]}