Ruby:检查数组中所有对象的属性是否相等

时间:2015-07-15 15:29:53

标签: arrays ruby

我有一个包含对象的数组。我想检查数组中的所有元素(对象)是否具有相似的属性值。

所以,如果我们有以下数组

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的相等值。

有什么想法?

3 个答案:

答案 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?