使用delete_if从两个数组中删除元素的最佳方法

时间:2012-06-01 15:36:39

标签: ruby arrays

我想知道这是否可以改进。

我有两个数组:links和archived_releases。 links包含可能出现在:url键中的字符串 archived_releases条目。

这没有用:

links.delete_if { |link|
  archived_releases.count > archived_releases.delete_if{ |release| release[:url] == link }.count
}

所以我想出了这个:

links.delete_if { |link|
  archived_releases.count > archived_releases.delete_if{ |release| release[:url] == link }.count
}

1 个答案:

答案 0 :(得分:1)

我会首先提取您要快速比较的archived_releases条目,然后您可以使用快速include?支票。类似的东西:

urls = archived_releases.collect { |ar| ar[:url] }
links.delete_if { |link| urls.include?(link) }