Arrays 在ruby中从多维数组中删除数组

Arrays 在ruby中从多维数组中删除数组,arrays,ruby,Arrays,Ruby,如何做到这一点?假设我有以下几点 arr = [[test, 0, 0, 0], [apples, 0, 9, 8]] 我知道我会这样做: def delete_me(item) arr.each do |a| if a[0] == item #delete the array containing test end end end delete_me('test') 就我所知,你只能这样做:a.remove(),但这

如何做到这一点?假设我有以下几点

arr = [[test, 0, 0, 0], [apples, 0, 9, 8]]
我知道我会这样做:

def delete_me(item)
    arr.each do |a|
        if a[0] == item
            #delete the array containing test
        end
    end
end

delete_me('test')

就我所知,你只能这样做:
a.remove()
,但这给我留下了一个空的
[]
,m我不希望这样,我希望它完全消失。

你可以使用
delete\u if
并将第一个术语与你的参数匹配:

arr = [['test', 0, 0, 0], ['apples', 0, 9, 8]]

def delete_me(array, term)
  array.delete_if {|x, *_| x == term }
end

(我也将数组作为参数包含在内,因为您的帖子中没有明确的执行上下文)。

跟进@iamnotmaynard的建议:

arr.delete_if { |a| a[0] == 'test' }
assoc

arr.delete(arr.assoc("test"))

我同样需要删除一个或多个与文本模式匹配的列s

col_to_delete = 'test'
arr = [['test','apples','pears'],[2,3,5],[3,6,8],[1,3,1]]
arr.transpose.collect{|a| a if (a[0] != col_to_delete)}.reject(&:nil?).transpose
=> [["apples", "pears"], [3, 5], [6, 8], [3, 1]]
尝试