如何明智地在对象周围分割数组

Boo*_*reg 3 ruby arrays

我说有一系列不确定的长度[1,2,3,4,5].我想减去1之前的所有内容3,然后添加1到后面的所有内容中3,作为示例[0,1,3,5,6].如果没有3,请添加1到所有内容:[1,2,4,5]=> [2,3,5,6].这样做最优雅的方式是什么?

saw*_*awa 6

a = [1, 2, 3, 4, 5]
n = a.index(3) || -1
a.map.with_index{|e, i| e + (i <=> n)}
# => [0, 1, 3, 5, 6]
Run Code Online (Sandbox Code Playgroud)