您如何评估嵌套数组?

时间:2018-06-30 15:19:52

标签: ruby multidimensional-array

我有一个嵌套数组,需要评估内部数组中的每个项目,如果它们满足两个条件,则返回“是”或“否”。在下面的示例中,它应返回['no','yes','no'],但不返回。

my_array= [[55,2], [62,3],[24,5]]

result= Array.new
my_array.map do |age, cap|
  if age > 60 &&  cap < 5
  result.push("yes")
   else
  result.push("no")
  end
 end 

这将返回正确的结果,但是三次。我想我需要在使用if / else之前深入到数组的第二层,但是当我在if / else语句之前的代码中添加以下内容时,会收到错误消息。

  `my_array.each do |nested_array|
   nested_array. map do |age, cap|
   if .... etc.

2 个答案:

答案 0 :(得分:2)

您正在查看my_array.map的评估结果

由于push返回了您刚刚推送到的数组,因此您实际上要映射3次结果,以便控制台输出为[result, result, result],并扩展为[["no", "yes", "no"], ["no", "yes", "no"], ["no", "yes", "no"]]

尝试一下:

my_array= [[55,2], [62,3],[24,5]]

result = my_array.map do |age, cap|
  if age > 60 && cap < 5
    "yes"
  else
    "no"
  end
end

答案 1 :(得分:0)

看看是否可行:

my_array = [[55, 2], [62, 3], [24, 5]]
result = my_array.map { |ary| (ary[0] > 60 && ary[1] < 5) ? 'yes' : 'no' }