Array在ruby中使用整数输出重复变量的数组

时间:2017-05-04 20:03:53

标签: arrays ruby variables count repeat

我是ruby的新手,这可能是一个简单的解决方案,但我似乎无法弄清楚如何输出数组中出现频率最高的数字。假设动物是一系列的弦。编写一组Ruby语句,报告输出单词“cat”出现在数组中的次数。例如,如果数组动物具有[“cat”,“dog”,“cat”,“cat”,“cow”]的内容,则您的脚本应写出数字3。 这是我到目前为止,它给了我一个猫的输出,但我想只显示它重复多少次。谢谢!

array = [ "cat", "dog", "cat", "cat", "cow" ]
repeat_item = array.uniq.max_by{ |i| array.count( i ) }
puts repeat_item 

2 个答案:

答案 0 :(得分:1)

因此,通过问题的措辞,我们只关心字符串cat的出现次数:

array.count { |x| x == 'cat' }
=> 3

答案 1 :(得分:0)

puts array.select{|e|e=='cat'}.count

在阅读评论后,我添加了另一个应满足其他要求的解决方案:

array = [ "cat", "dog", "cat", "cat", "cow", "cow", "cow" ]

repeat_item = array.uniq.each_with_object({}){|x, result| result[x] = array.count(x) }

max_count = repeat_item.values.max
max_item = repeat_item.key(max_count)

puts "#{max_item}: #{max_count}"

我故意留下变量来说明方法。 请注意,如果某些条目具有相同的出现次数,则会生成第一个

另一种解决方案:一行但不容易理解

puts array.group_by{|i| i }
     .max_by{|i,v| v.count }
     .instance_eval{|i| "#{i.first}: #{i.last.count}"}