例如,我有两个对象数组:
a1 = [obj1, obj2 , obj3]
a2 = [obj4, obj5, obj6]
每个数组都有同一类的不同对象。我想obj1.att == obj4.att
在一次迭代中检查它们是否具有相同的属性值()。
a1.each
将对单个数组进行迭代。我不想使用for
或while
循环。我想要一种轨道方式来做到这一点。
例如,我有两个对象数组:
a1 = [obj1, obj2 , obj3]
a2 = [obj4, obj5, obj6]
每个数组都有同一类的不同对象。我想obj1.att == obj4.att
在一次迭代中检查它们是否具有相同的属性值()。
a1.each
将对单个数组进行迭代。我不想使用for
或while
循环。我想要一种轨道方式来做到这一点。
我想在迭代之前检查数组大小是否匹配是有意义的:
same_att = a1.size == a2.size && a1.map(&:att) == a2.map(&:att)
同样的想法,一个惰性实现(仅当数组中有很多元素时):
same_att = a1.size == a2.size && a1.lazy.zip(a2).all? { |x, y| x.att == y.att }
尝试关注
a1.map(&:att) == a2.map(&:att)
已编辑记住以下内容
[1,2,3] == [1,2,3] #true
和
[1,2,3] == [2,3,1] #false
因此它只会true
在att attribute of obj1, obj4 AND obj2, obj5 AND obj3, obj6 are same.
a1.each {|i| a2.select {|k| k.att == i.att }}