将条件与条件相交?轨道

时间:2015-07-27 17:45:30

标签: ruby-on-rails

如果项目符合条件,我正试图获得两个集合之间的交集。

到目前为止,这是我的代码:

facebook_friends.select {|friend| @liked_by.select {|liked| liked.id == friend["id"]}}

facebook_friends是包含用户的Facebook好友信息的哈希。 @liked_by是一群喜欢电影的Struct.new("Friend", :facebook_id, :id)用户。

我正在努力让那些也喜欢这部电影的Facebook好友,但那句话给了我所有的Facebook好友,或者有时候只有相同的参数才是空的。我做错了什么?

1 个答案:

答案 0 :(得分:1)

Array#select返回块返回true的数组中所有元素的列表;如果没有,那么它返回一个空数组。你的实现的问题是你的外部块总是评估为true,因为即使一个空数组也算作" true" Ruby中的价值。所以你要做的就是改变你的内部块,如果匹配实际存在,只返回true;使用例如any?代替select将会这样做:

facebook_friends.select {|friend| @liked_by.any? {|liked| liked.id == friend["id"]}}
相关问题