这将如何完成?假设我有以下
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()
但是我留下了一个空[]
,我不希望这样,我希望它完全消失。
答案 0 :(得分:1)
您可以使用delete_if
并将第一个字词与您的参数匹配:
arr = [['test', 0, 0, 0], ['apples', 0, 9, 8]]
def delete_me(array, term)
array.delete_if {|x, *_| x == term }
end
(我已将数组作为参数包含在内,因为您的帖子中的执行上下文不明确。)
答案 1 :(得分:1)
跟进@ iamnotmaynard的建议:
arr.delete_if { |a| a[0] == 'test' }
答案 2 :(得分:0)
assoc
。
arr.delete(arr.assoc("test"))
答案 3 :(得分:0)
我有类似的需要删除与文字模式匹配的一个或多个 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]]