我有一个包含对象的数组。我想检查数组中的所有元素(对象)是否具有相似的属性值。
所以,如果我们有以下数组
array = [clone1, clone2, clone3]
clone1,clone2和clone3是类clone的对象。它们包含一个名为“source”的属性。我想检查clone1,clone2和clone3是否具有相同的“source”值。
这是克隆对象的一个例子
#<CloneTool:0x007ff968a2f7b0 @nline=["10"], @sim=["100"], @ds=[".."], @dstart=[".."], @dend=[".."], @hs=[".."], @hstart=[".."], @hend=[".."]>
所以我想检查数组是否具有@ds的相等值。
有什么想法?
答案 0 :(得分:2)
array.map(&:source).uniq.length == 1
或
array.group_by(&:source).length == 1
答案 1 :(得分:1)
arr.uniq(&:source).size == 1
如果@source
没有访问者:
arr.uniq { |e| e.instance_variable_get(:@source) }.size == 1
答案 2 :(得分:-3)
array.map{|x| x.source == array[0].source}.all?