2011-02-05 72 views
4

我一直在努力学习如何处理由数组组成的数组。Array of Array,根据索引处数组的内容删除一个索引?

说我有这个数组:

my_array = [['ORANGE',1],['APPLE',2],['PEACH',3] 

我怎么会去寻找一个包含“苹果”和删除索引(删除子数组my_array指数[“苹果”,2],因为'苹果“在该指数阵列condined)?

谢谢 - 我真的很感谢这里的帮助。

回答

6

您可以使用Array.select筛选出的项目:

>> a = [['ORANGE',1],['APPLE',2],['PEACH',3]] 
=> [["ORANGE", 1], ["APPLE", 2], ["PEACH", 3]] 

>> a.select{ |a, b| a != "APPLE" } 
=> [["ORANGE", 1], ["PEACH", 3]] 

select将返回这些项目从,为此给定块(这里a != "APPLE")返回true

+0

这是真棒。我非常感谢,谢谢! – Reno 2011-02-05 05:08:12

6
my_array.reject { |x| x[0] == 'APPLE' } 
+0

我认为MYYN解构产量(我认为这就是所谓的)是很好的。 – DigitalRoss 2011-02-05 02:18:19

+1

这是一个变种:`a.reject {| x,y | x =='APPLE'}` – miku 2011-02-05 02:20:20

4

我测试了这一点,它的工作原理:

my_array.delete_if { |x| x[0] == 'APPLE' }