试图使用索引获取数组中的上一个和下一个项目。

问题描述 投票:1回答: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
   fith 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, 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
arrays ruby indexing each
2个回答
3
投票

你使用的是 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

2
投票

你可以用 each_cons 来获取顺序的项目。

final = [input[0] * input[1]]

input.each_cons(3) do |precedent, _current, subsequent|
  final << precedent * subsequent
end

final << input[-1] * input[-2]

实例

© www.soinside.com 2019 - 2024. All rights reserved.