首页 > 解决方案 > 如何在使用“while”循环而不使用 Ruby 中的“inject”、“each”、“collect”或“map”的情况下对数组元素进行平方

问题描述

我正在为 Bootcamp 做一些课前工作,但遇到了这个问题。

我需要在使用循环时对数组进行平方,仅此while而已。numbers = [1,2,3]它需要等于[1,4,9]

def square_array(numbers)
  counter = 0
  while numbers[counter] do
    return numbers[counter]
    counter += 1
  end
  counter ** 2
end

标签: ruby

解决方案


不使用数组映射:

def square_array(numbers)
  counter = 0
  sqr_numbers=[]
  while numbers[counter] do
    sqr_numbers<<numbers[counter]*numbers[counter]
    counter += 1
  end
  sqr_numbers
end

您可以map将数组的每个元素平方或做任何您想做的事情:

def square_array(numbers)
  return numbers.map {|num| num ** 2}
end

推荐阅读