我有两个数组,每个数组都包含不同的属性。
participants
guests
唯一的共同点是provider_user_id
我想做这样的事情
all_people = participants.map {|p| p.provider_user_id <> guests.provider_user_id }
这可能不正确。
如何消除那些同样位于来宾阵列中的参与者?
答案 0 :(得分:1)
以下是有效的,但如果有更简洁的话,我会感兴趣。
guest_provider_ids = guest.map(&:provider_id)
non_guest_participants = participants.reject do |participant|
guest_provider_ids.include?(participant.provider_user_id)
end
答案 1 :(得分:1)
可以工作......
guests.each { |g| participants << g }
guests.uniq! { |g| g.provider_user_id }
这(应该)首先组合两个数组,然后根据键删除任何重复数据。
答案 2 :(得分:1)
好的答案,但不要忘记|。对于1.9
p (guests | participants).uniq!{|g| g.provider_user_id}
1.8
p (guests | participants).reject{|p| guests.map{|g| g.provider_user_id}.include?(p.provider_user_id)}