当数组中存在另一个数组时,删除该数组中的字符串

时间:2014-11-17 10:09:36

标签: ruby

在ruby脚本中我有两个数组

exclude = ['bgb400', 'pip900', 'rtr222']
result = ['pda600', 'xda700', 'wdw300', 'bgb400', 'ztz800', 'lkl100']

我想迭代结果数组并删除exclude数组中存在的任何字符串。最后字符串' bgb400'应该从结果数组中删除。

3 个答案:

答案 0 :(得分:4)

使用operator -

irb(main):004:0> result - exclude
=> ["pda600", "xda700", "wdw300", "ztz800", "lkl100"]

如果您确实需要修改result数组,可以使用reject!。但是,如果是这种情况,最好检查一下代码。

result.reject! {|s| exclude.include? s}

答案 1 :(得分:3)

简单地做:

new_result = result - exclude
=> ["pda600", "xda700", "wdw300", "ztz800", "lkl100"]

实际上它的作用是检查两个数组中的匹配条目,并产生不包括匹配条目的结果。

答案 2 :(得分:1)

听起来像Array#delete_if方法最适合这项任务。

exclude = ['bgb400', 'pip900', 'rtr222']
result = ['pda600', 'xda700', 'wdw300', 'bgb400', 'ztz800', 'lkl100']

为了删除exusde数组中包含的exusde数组中的元素,试试这个

result.delete_if{|r|exclude.include?('r')}