检查范围的每个索引是否包含相同的值

时间:2014-11-10 02:18:59

标签: ruby arrays

假设我有一个数组

array = [1,2,3,4,5,6,7,8,9]

现在,索引1和2的值会像这样改变

array[1] = 1
array[2] = 1

现在我有了

[1,1,1,4,5,6,7,8,9]

我想检查前三个索引是否都包含1

array[0..2] has same value?

如果前三个索引完全相同,则返回true。有没有办法呢?

4 个答案:

答案 0 :(得分:4)

我能想到的最简单的方式:

array[0..2].uniq.size == 1

答案 1 :(得分:0)

您可以编写自己的方法:

array[ 0 ] == array[ 1 ] && array[ 1 ] == array[ 2 ]

答案 2 :(得分:0)

我能想到的最可读的方式是(如果3个月过去了,你回过头来想知道这段代码做了什么,这将回答它):

same_value = 1
a.first(3).all? { |number| number == same_value }

这是假设您知道same_value将会是什么。

答案 3 :(得分:0)

array[0..2].uniq.size != array[0..2].size

这将检查数组中唯一元素的数量是否不等于元素总数。

在你的情况下

[1,1,1] => # elements = 3
[1,1,1] => # unique elements = 1

这两者不同。