Arrays 检查数组中的特定值组合

Arrays 检查数组中的特定值组合,arrays,ruby,Arrays,Ruby,我有一个包含柠檬和梨的数组。我想检查数组中是否正好有五个梨和两个柠檬,而不为这两个创建单独的数组。我该怎么做呢?您可以使用数组计数方法获取数组中特定元素的计数 fruits = [:pears, :pears, :lemons, :figs, :pears, :figs, :lemons, :figs, :apples, :pears, :pears] puts fruits.count(:pears) == 5 && fruits.count(:lemons) == 2 #

我有一个包含柠檬和梨的数组。我想检查数组中是否正好有五个梨和两个柠檬,而不为这两个创建单独的数组。我该怎么做呢?

您可以使用数组
计数
方法获取数组中特定元素的计数

fruits = [:pears, :pears, :lemons, :figs, :pears, :figs, :lemons, :figs, :apples, :pears, :pears]

puts fruits.count(:pears) == 5 && fruits.count(:lemons) == 2 # will return true if the pears is 5 and lemons is 2 in fruit array

与直接调用
count
相比,如果您想稍微提高性能,可以使用
Enumerable\each\u with_object

# Thanks Vishal for the input data prepared
fruits = [
  :pears, :pears, :lemons, :figs, :pears, :figs, 
  :lemons, :figs, :apples, :pears, :pears]

fruits.each_with_object(Hash.new(0)) { |f, acc| acc[f] += 1 }
#⇒ {:pears=>5, :lemons=>2, :figs=>3, :apples=>1}      
end

欢迎来到SO。我们不是免费的编码服务。请在您的问题中包含您尝试的代码,以便我们能够充分帮助您。什么是柠檬和梨?它们是用这样的局部变量引用的对象吗?它们是那种拼写成那样的字符串或符号吗?它们是具有类似名称的特定类的实例吗?或者别的什么?
[:梨,:梨,:柠檬,:无花果,:梨,:无花果,:柠檬,:无花果,:苹果,:梨,:梨,:梨]。每个带有_对象(Hash.new(0)){|水果,计数|计数[水果]+=1}。在(:梨,:柠檬)处的值=[5,2]#=>真
。这使用一个计数散列,默认值为零。您没有ruby数组。无法继续。