我想遍历嵌套数组并对每个元素进行操作,因此在这种情况下,请对每个数字求平方。我知道如何为普通数组执行此操作,但是由于某些原因,当包含更深层的迭代来访问内部数组时,我得到了未定义的映射方法。我也是一个新手,所以如果您能解释一下它是如何工作的,那将对我的学习有所帮助。谢谢
def SquareArrayElements(n)
n.each do |number|
number.map do |num|
squared_nums = num * num
end
end
squared_nums
end
SquareArrayElements([10,[[10],10],[10]])
您只需要在数组上调用map,而无需在整数上调用。这就是为什么您得到一个未定义的map方法的原因,整数不支持该方法。
尝试
def square_array(element)
if element.responds_to?(:map)
element.map{|m| square_array(m)}
else
element * element
end
end
自从您在评论中说过:
我想将10s平方并返回一个数组=> [100,100,100,100]。
我假设您不需要保留原始数组,而只需要一个具有平方结果的数组。如果是这种情况,您可以#flatten
数组,然后对数字求平方:
#flatten