如何从大数组中删除一些项目

时间:2015-08-04 10:42:09

标签: ruby

我想检查不存在的文件,所以我按如下方式编写代码:

MAX_ID = 43148178
def extract_ids
  done = Dir['res/*.html'].map {|name| name[/\d+/].to_i}
  all = (1..MAX_ID).to_a
  all.delete_if { |i| done.include?(i) }
  all.shuffle
end

ls res | wc -l返回35854

我发现这很慢。我该如何有效地做到这一点?

1 个答案:

答案 0 :(得分:3)

如果'done'是您希望从'all'数组中删除的项目数组,则可以执行以下操作:

all = [1,2,3,4,5,6,7,8,9,10]
done = [1,3,5]
all - done
# => [2, 4, 6, 7, 8, 9, 10]

或者,您想要更改所有数组

all -= done