尝试使用索引获取数组的上一个和下一个项目
Trying to get the previous and next item of an array using index
我想做的是从输入数组创建一个新数组并遍历它。新数组的每一项都是迭代的前一项和下一项相乘的结果。
例如:
Array input: [1, 2, 3, 4, 5, 6]
Array_final: [2, 3, 8, 15, 24, 30]
first item: 2*1 (because there's no previous item)
second item: 3*1
third item: 4*2
forth item: 5*3
fifth item: 6*4
sixth item: 6*5 (we use the current item because we don't have a next one)
这是我的代码,我不明白为什么我总是得到 array_final = [0, 0, 0, 0, 0, 0]
class Arrays
def self.multply(array)
array_final = []
last_index = array.length-1
array.each_with_index do |num, i|
if i == 0
array_final.push (num[i+1])
elsif i == last_index
array_final.push (num*num[i-1])
else
array_final.push(num[i+1]*num[i-1])
end
end
return array_final
end
end
您将 num
用作数组,而它是一个元素。
我想你的意思是:
array.each_with_index do |num, i|
if i == 0
array_final.push (array[i+1])
elsif i == last_index
array_final.push (num*array[i-1])
else
array_final.push(array[i+1]*array[i-1])
end
end
您可以使用 each_cons
获取顺序项:
final = [input[0] * input[1]]
input.each_cons(3) do |precedent, _current, subsequent|
final << precedent * subsequent
end
final << input[-1] * input[-2]
我想做的是从输入数组创建一个新数组并遍历它。新数组的每一项都是迭代的前一项和下一项相乘的结果。
例如:
Array input: [1, 2, 3, 4, 5, 6]
Array_final: [2, 3, 8, 15, 24, 30]
first item: 2*1 (because there's no previous item)
second item: 3*1
third item: 4*2
forth item: 5*3
fifth item: 6*4
sixth item: 6*5 (we use the current item because we don't have a next one)
这是我的代码,我不明白为什么我总是得到 array_final = [0, 0, 0, 0, 0, 0]
class Arrays
def self.multply(array)
array_final = []
last_index = array.length-1
array.each_with_index do |num, i|
if i == 0
array_final.push (num[i+1])
elsif i == last_index
array_final.push (num*num[i-1])
else
array_final.push(num[i+1]*num[i-1])
end
end
return array_final
end
end
您将 num
用作数组,而它是一个元素。
我想你的意思是:
array.each_with_index do |num, i|
if i == 0
array_final.push (array[i+1])
elsif i == last_index
array_final.push (num*array[i-1])
else
array_final.push(array[i+1]*array[i-1])
end
end
您可以使用 each_cons
获取顺序项:
final = [input[0] * input[1]]
input.each_cons(3) do |precedent, _current, subsequent|
final << precedent * subsequent
end
final << input[-1] * input[-2]