我有一个包含一系列值的大数组。 检查x中的值是否对x +距离上的值有影响 我想找到所有的对
pair = [values[x], values[x+1]]
以下代码可以使用
pairs_with_distance = []
values.each_cons(1+distance) do |sequence|
pairs_with_distance << [sequence[0], sequence[-1]]
end
但它看起来很复杂,我想知道我是否让它更短更清晰
答案 0 :(得分:2)
您可以直接使用map
来缩短代码:
pairs_with_distance = values.each_cons(1 + distance).map { |seq|
[seq.first, seq.last]
}
我更喜欢下面的示例,因为它有简短易读的代码行,并且因为它将步骤分开 - 这种方法允许您为中间计算提供有意义的名称(groups
案件)。您可以根据应用程序的真实域名提出更好的名称。
values = [11,22,33,44,55,66,77]
distance = 2
groups = values.each_cons(1 + distance)
pairs = groups.map { |seq| [seq.first, seq.last] }
p pairs