使用for循环或each_with_index微不足道,只是想知道是否有更好的方法使用Ruby语法。

我需要创建一个新数组,它是源数组的衍生物,例如:

for(int i = 1; i < oldArray.length; i++)
{
    newArray[i] = oldArray[i] - oldArray[i-1]
}
有帮助吗?

解决方案

old_array.each_cons(2).map{|x, y| y - x}

使用块大小为2调用的可枚举#each_cons 但没有块返回一个Enumerator,它将迭代 old_array 中的每对连续元素。然后我们只使用 map 对每对进行减法。

其他提示

last=0
new = old.map{|v|x=v-last;last=v;x}[1..-1]
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top