如何删除列表中不存在其元素的数组

时间:2013-10-09 15:14:58

标签: ruby arrays multidimensional-array

我有一个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 A删除Array C'a1'(其第二个元素分别为'c1'array)以获取以下内容:

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

1 个答案:

答案 0 :(得分: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]或其他)。