我想要创建一个函数,返回另一个数组列表中包含的数组列表。这就是我想出来的:
def coffee(arr)
acceptable_coffee = ["dark", "blend", "handsome"]
good_coffee = acceptable_coffee & arr.map{|n| n.downcase}
end可能的输入可能包含acceptable_coffee.Their大小写中的元素,但不一定是小写的,即:
arr1 = ["dark", "decaf", "java", "HANDSOME"]
arr2 = ["dark", "smooth", "BLEND"]我希望函数返回包含可接受元素的数组,同时保留它们的上下大小写。那么,函数应该返回:
coffee(arr1) #=> ["dark", "HANDSOME"]
coffee(arr2) #=> ["dark", "BLEND"]目前,它分别返回["dark", "handsome"]和["dark", "blend"]。如果我不把它放下来,它就不能正常相交了。如何在保留上下大小写的同时返回相交数组?别担心其他边缘案件。假设可能的数组输入的元素是完全超感知的/完全低精度的,如本例所示。
发布于 2016-09-21 19:02:26
这将得到交集,但id并不完全使用时髦的&运算符或集合。
def coffee(rest)
acceptable_coffee = ["dark", "blend", "handsome"]
rest.select { |name| acceptable_coffee.include? name.downcase }
end发布于 2016-09-21 19:37:41
这不是最漂亮的方法,但您可以这样做,以保留大写。
def coffee(arr)
acceptable_coffee = ["dark", "blend", "handsome"]
good_coffee = (acceptable_coffee & arr) + (arr & acceptable_coffee.map(&:upcase))
end
coffee(arr1) #=> ["dark", "HANDSOME"]
coffee(arr2) #=> ["dark", "BLEND"]发布于 2016-09-21 19:53:09
def coffee(arr, acceptable)
r = /#{acceptable.join('|')}/i
arr.select { |s| s =~ r }
end
acceptable = ["dark", "blend", "handsome"]
coffee ["dark", "decaf", "java", "HANDSOME"], acceptable
#=> ["dark", "HANDSOME"]
coffee ["dark", "smooth", "BLEND"], acceptable
#=> ["dark", "BLEND"] 备注
r = /#{acceptable.join('|')}/i
#=> /dark|blend|handsome/ihttps://stackoverflow.com/questions/39624480
复制相似问题