返回红宝石阵类似的元素 [英] Return similar elements of array in Ruby
本文介绍了返回红宝石阵类似的元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
说我有这样的一个数组:
改编= ['footballs_jumba_10','footballs_jumba_11','footballs_jumba_12',
'footballs_jumba_14','alpha_romeo_11','alpha_romeo_12',
'alpha_juliet_10','alpha_juliet_11']
如果我想回到副本,(假设任何数组中的这些字符串是完全相同的,我只想
收益arr.detect {| A | arr.count(a)及GT; 1}
但是,如果我想获得数组的每个元素的前10个字符的唯一副本,不知道事先的变化是什么?像这样的:
['footballs_','alpha_rome','alpha_juli']
解决方案
这是该方法很简单哈利#区别
我在我的答案的here :
改编<< 让我们添加一个字符串出现只是一次
#=> [footballs_jumba_10,footballs_jumba_11,footballs_jumba_12,
#footballs_jumba_14,alpha_romeo_11,alpha_romeo_12,
#alpha_juliet_10,alpha_juliet_11,让我们补充说,只是出现一个字符串一次]A = {arr.map | S | S [0,10]}
#=> [footballs_,footballs_,footballs_,footballs_,alpha_rome,
#alpha_rome,alpha_juli,alpha_juli,让我们增加]
B = a.difference(a.uniq)
#=> [footballs_,footballs_,footballs_,alpha_rome,alpha_juli]
b.uniq
#=> [footballs_,alpha_rome,alpha_juli]
Say I have such an array:
arr = ['footballs_jumba_10', 'footballs_jumba_11', 'footballs_jumba_12',
'footballs_jumba_14', 'alpha_romeo_11', 'alpha_romeo_12',
'alpha_juliet_10', 'alpha_juliet_11']
If I wanted to return duplicates, (assuming any of these strings in the array were exactly identical, I would just
return arr.detect{ |a| arr.count(a) > 1 }
but, what if I wanted to get only duplicates of the first 10 characters of each element of the array, without knowing the variations beforehand? Like this:
['footballs_', 'alpha_rome', 'alpha_juli']
解决方案
This is quite straightforward with the method Arry#difference
that I proposed in my answer here:
arr << "Let's add a string that appears just once"
#=> ["footballs_jumba_10", "footballs_jumba_11", "footballs_jumba_12",
# "footballs_jumba_14", "alpha_romeo_11", "alpha_romeo_12",
# "alpha_juliet_10", "alpha_juliet_11", "Let's add a string that appears just once"]
a = arr.map { |s| s[0,10] }
#=> ["footballs_", "footballs_", "footballs_", "footballs_", "alpha_rome",
# "alpha_rome", "alpha_juli", "alpha_juli", "Let's add "]
b = a.difference(a.uniq)
#=> ["footballs_", "footballs_", "footballs_", "alpha_rome", "alpha_juli"]
b.uniq
#=> ["footballs_", "alpha_rome", "alpha_juli"]
这篇关于返回红宝石阵类似的元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文