如何比较数组中的值

时间:2013-11-26 13:18:17

标签: ruby arrays

假设我有一个数组

array = [1,2,3,4,5]

如何比较第一个值和第二个值,第二个值与第三个值等。

我唯一想到的就是这个(相当难看)

compared = array.each_with_index.map do |a,i| 
  array[i+1].nil? ? nil : array[i] - array[i + 1]
end

compared.compact # to remove the last nil value

我想要的是

[-1, -1, -1, -1]

有没有一个很好的“红宝石方式”实现这一目标?没有使用所有丑陋的array[i]array[i+1]内容。

2 个答案:

答案 0 :(得分:9)

使用Enumerable#each_cons

array = [1,2,3,4,5]
array.each_cons(2).map { |a,b| a - b }
# => [-1, -1, -1, -1]

答案 1 :(得分:1)

您也可以使用Enumerable#inject:

a = [1,2,3,4,5]
b = []
a.inject{|i,j| b<< i-j; j}
p b 

结果:

[-1, -1, -1, -1]