2013-10-09 61 views
-2

我有一個數組的array如下:如何刪除陣列,其元素不存在在列表

array = [ 
    [ 'a0', 'a1', 'a2' ], # Array A 
    [ 'b0', 'b1', 'b2' ], # Array B 
    [ 'c0', 'c1', 'c2' ], # Array C 
    ...,     # Array ... 
    [ 'z0', 'z1', 'z2' ] # Array Z 
] 

,並想從中刪除其第一個元素的數組中不存在list

list = [ 'a0', 'c0' ] 

Array AArray C(其第一個元素是分別'a0''c0')得到以下:

array = [ 
    [ 'b0', 'b1', 'b2' ], # Array B 
    ...,     # Array ... 
    [ 'z0', 'z1', 'z2' ] # Array Z 
] 

我該怎麼做?


我願做類似的事情,以第二個元素的數組中不存在another_list

another_list = [ 'a1', 'c1' ] 

array = [ 
    [ 'a0', 'a1', 'a2' ], # Array A 
    [ 'b0', 'b1', 'b2' ], # Array B 
    [ 'c0', 'c1', 'c2' ], # Array C 
    ...,     # Array ... 
    [ 'z0', 'z1', 'z2' ] # Array Z 
] 

在這種情況下,我想刪除Array AArray C(第二個元素是分別'a1''c1')從array得到如下:

array = [ 
    [ 'b0', 'b1', 'b2' ], # Array B 
    ...,     # Array ... 
    [ 'z0', 'z1', 'z2' ] # Array Z 
] 
+2

你寫道,你想刪除在另一個數組中的第一個/第二個元素是** not **的數組,但是你似乎正在刪除那些元素**在另一個數組中的**。不清楚你在做什麼。 – sawa

+1

我們需要查看您編寫的代碼以嘗試解決此問題。 –

回答

2
list = [ 'a0', 'c0' ] 

array = [ 
    [ 'a0', 'a1', 'a2' ], # Array A 
    [ 'b0', 'b1', 'b2' ], # Array B 
    [ 'c0', 'c1', 'c2' ], # Array C 
    [ 'z0', 'z1', 'z2' ] # Array Z 
] 

array2 = array.reject { |sub| list.include?(sub.first) } 

array2可能只是array如果你真的想失去這些物品。對於其他變化,只需更改您正在查看的元素(sub[1],或其他)。