【发布时间】:2011-04-04 17:51:52
【问题描述】:
我有几个数组。而且我想缩小它们的范围,这样最后,无论结果如何,只要这些数组不是 nil,就会在所有其他数组中看到值。
我在编码方面的悲伤尝试:
array_of_users = []
array_of_users & @zip_ids if !@zip_ids.empty?
array_of_users & @sex_ids if !@sex_ids.empty?
array_of_users & @interest_ids if !@interest_ids.empty?
array_of_users & @age_ids if !@age_ids.empty?
从逻辑上讲,我会认为这会起作用,因为只要它不为空,它就会在每一个中找到相似性,但它实际上并没有将它们添加到数组中。
你会如何做到这一点?
【问题讨论】:
-
[]和其他任何东西的交集总是[]。从您的示例中,我无法真正说出您要尝试做什么。看起来您想根据各种条件过滤数组?也许Array#select会更合适? -
只是为了澄清-您只需要所有数组中的值,而不是唯一值的列表,对吗?用数学术语来说,你想要一个交集,而不是一个并集?
-
@Chris,是的,我想要一个十字路口。但它必须是一个将数据保存到
array_of_users中的交叉点。如您所见,@cam 的评论是正确的,[]的交集仍然是[]
标签: ruby-on-rails ruby arrays