假设我有一个数组
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]
内容。
答案 0 :(得分:9)
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]