Как получить несколько значений из массива на основе индексов в Ruby? - PullRequest
2 голосов
/ 19 апреля 2019

У нас есть массив, скажем:

my_arr = [121, 23, 46, 91, 38, 140]

Также у нас есть массив индексов:

indxs = [1, 2, 4]

Я знаю о методе values_at, но он не принимаетоднако, массивы могут принимать несколько значений, доказательство: https://ruby -doc.org / core-2.5.1 / Array.html # method-i-values_at

Возможно, вы могли быдайте мне подсказку, как бороться с values_at.Заранее спасибо!

РЕДАКТИРОВАТЬ: у нас есть 2 ответа, поэтому я сделал тест (1000 итераций, array.size = 20, indexes.size = 4)

                  user     system      total        real
values_at       0.004502   0.000000   0.004502 (  0.004476)
map[i]          0.005878   0.000000   0.005878 (  0.006968)

Ответы [ 2 ]

6 голосов
/ 19 апреля 2019

Вы можете разделить массив, как показано ниже:

my_arr = [121, 23, 46, 91, 38, 140]
indxs = [1, 2, 4]
my_arr.values_at(*indxs)
# => [23, 46, 38]
3 голосов
/ 19 апреля 2019

Как альтернатива:

my_arr = [121, 23, 46, 91, 38, 140]
indxs = [1, 2, 4]

indxs.map { |i| my_arr[i] }
#=> [23, 46, 38]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...