Как вы оцениваете вложенный массив? - PullRequest
0 голосов
/ 30 июня 2018

У меня есть вложенный массив, и мне нужно оценить каждый элемент во внутреннем массиве и вернуть «да» или «нет», если они удовлетворяют двум условиям. В приведенном ниже примере он должен возвращать ['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 голосов
/ 30 июня 2018

Проверьте, работает ли это:

my_array = [[55, 2], [62, 3], [24, 5]]
result = my_array.map { |ary| (ary[0] > 60 && ary[1] < 5) ? 'yes' : 'no' }
0 голосов
/ 30 июня 2018

Вы видите оцененный результат my_array.map

Поскольку push возвращает массив, в который вы только что нажали, вы, по сути, трижды отображаете свой результат так, что вывод вашей консоли равен [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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...