在 Ruby 中进行此数组比较的正确方法?
A proper way to do this array comparrison in Ruby?
如果数组 a 包含数组 b 中也存在的任何数字,我希望它们从 a 中消失。
if b.any?
b.each do |asdf|
if a.include?(asdf)
a = a - [asdf]
end
end
end
这是最有效的方法吗?
更新:
答案很好,但我意识到搜索会返回一组 People 实例,@search_return。我的问题是我有 3 个 id 数组(整数):@event.a、@event.b 和 @event.c,它们是已经在某些活动中注册的人的 id容量。
我想从搜索中取出已经注册的人return,但不幸的是event.aevent.b和event.c只是ids人民,而不是人民的实际情况。因此这一切:
if instance.a.any?
instance.a.each do |asdf|
qwer = Qwer.find(asdf)
if @search_return.include?(qwer)
@search_return = @search_return - [qwer]
end
end
end
if instance.b.any?
instance.b.each do |asdf|
qwer = Qwer.find(asdf)
if @search_return.include?(qwer)
@search_return = @search_return - [qwer]
end
end
end
if instance.c.any?
instance.c.each do |asdf|
qwer = Qwer.find(asdf)
if @search_return.include?(qwer)
@search_return = @search_return - [qwer]
end
end
end
这可能对数据库造成很大负担,但不会经常执行此搜索
你想这样做吗?
irb(main):001:0> b = [1,2,3]
=> [1, 2, 3]
irb(main):002:0> a = [4,5,3]
=> [4, 5, 3]
irb(main):003:0> a - b
=> [4, 5]
或者这个?
a | b
=> [4, 5, 3, 1, 2]
如果你的任务是"remove all elements in a that also exist in b"
那么你可以减去它们:
2.6.3 :002 > a = [1, 2, 3, 4]
=> [1, 2, 3, 4]
2.6.3 :003 > b = [2, 3]
=> [2, 3]
2.6.3 :004 > c = a - b
=> [1, 4]
2.6.3 :005 >
如果数组 a 包含数组 b 中也存在的任何数字,我希望它们从 a 中消失。
if b.any?
b.each do |asdf|
if a.include?(asdf)
a = a - [asdf]
end
end
end
这是最有效的方法吗?
更新:
答案很好,但我意识到搜索会返回一组 People 实例,@search_return。我的问题是我有 3 个 id 数组(整数):@event.a、@event.b 和 @event.c,它们是已经在某些活动中注册的人的 id容量。
我想从搜索中取出已经注册的人return,但不幸的是event.aevent.b和event.c只是ids人民,而不是人民的实际情况。因此这一切:
if instance.a.any?
instance.a.each do |asdf|
qwer = Qwer.find(asdf)
if @search_return.include?(qwer)
@search_return = @search_return - [qwer]
end
end
end
if instance.b.any?
instance.b.each do |asdf|
qwer = Qwer.find(asdf)
if @search_return.include?(qwer)
@search_return = @search_return - [qwer]
end
end
end
if instance.c.any?
instance.c.each do |asdf|
qwer = Qwer.find(asdf)
if @search_return.include?(qwer)
@search_return = @search_return - [qwer]
end
end
end
这可能对数据库造成很大负担,但不会经常执行此搜索
你想这样做吗?
irb(main):001:0> b = [1,2,3]
=> [1, 2, 3]
irb(main):002:0> a = [4,5,3]
=> [4, 5, 3]
irb(main):003:0> a - b
=> [4, 5]
或者这个?
a | b
=> [4, 5, 3, 1, 2]
如果你的任务是"remove all elements in a that also exist in b" 那么你可以减去它们:
2.6.3 :002 > a = [1, 2, 3, 4]
=> [1, 2, 3, 4]
2.6.3 :003 > b = [2, 3]
=> [2, 3]
2.6.3 :004 > c = a - b
=> [1, 4]
2.6.3 :005 >