在ruby脚本中我有两个数组
exclude = ['bgb400', 'pip900', 'rtr222']
result = ['pda600', 'xda700', 'wdw300', 'bgb400', 'ztz800', 'lkl100']
我想迭代结果数组并删除exclude数组中存在的任何字符串。最后字符串' bgb400'应该从结果数组中删除。
答案 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')}