Как найти целое / максимальное число в массиве для ruby ​​и вернуть проиндексированную позицию? - PullRequest
4 голосов
/ 01 ноября 2009

Это то, что я имею до сих пор

ages   = [20,19,21,17,31,33,34]
names  = [Bob, Bill, Jill, Aimee, Joe, Matt, Chris]

Как взять возраст и применить к нему метод, чтобы извлечь из него наибольшее целое число и узнать его индексированную позицию. Причина в том, что я хочу знать, какой человек в именах самый старый. Параллельное присваивание блокирует мою способность выполнять сортировку в массиве, поскольку оно меняет положение элемента, связанного с именами.

Пожалуйста, включите код, чтобы обдумать спасибо,

Ответы [ 2 ]

12 голосов
/ 01 ноября 2009
ages.zip(names).max
3 голосов
/ 01 ноября 2009
names[ages.index(ages.max)]

Что он делает, так это находит максимальное значение в возрасте (ages.max), получает индекс первого соответствующего значения в возрасте и использует его для получения соответствующего человека. Обратите внимание, что если два или более человека имеют одинаковый возраст, который является максимальным, он даст вам только имя первого в массиве.

Edit: чтобы ответить на ваш комментарий, я не уверен, зачем вам нужна эта структура параллельных массивов (было бы намного проще, если бы у вас был объект person). Тем не менее, вы можете попробовать что-то вроде:

indices = []
ages.each_with_index { |age, i| indices << i if age < 20 }
indices.each { |i| puts names[i] }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...