【发布时间】:2015-12-29 13:08:11
【问题描述】:
我正在尝试过滤一个数组,我想在其中排除任何在数组中具有“子字符串”的内容。 这是为了创建一个搜索词数组,但限制重复搜索的数量。
即
[ "Rough Collie", "Alsatian", "Standard Poodle", "Poodle", "Collie", "Schnauser", "Border Collie", "Chihuahua" ]
=>
[ "Alsatian", "Poodle", "Collie", "Schnauser", "Chihuahua" ]
我们删除了标准贵宾犬,因为贵宾犬是匹配的,而粗犷牧羊犬和边境牧羊犬是因为牧羊犬是匹配的。 即,如果一个词存在,但在另一个术语中也作为子字符串存在,则删除较长的术语。
arr - arr.map { |a| arr.select { |s| s.include?(a) && s != a}}.flatten
这基本上可以工作,但看起来有点难看。有没有更优雅的方法来做到这一点?
【问题讨论】: