Как узнать все индексы заданного элемента в массиве на ruby?

Пользователь

от otha_marks , в категории: Ruby , 2 года назад

Как узнать все индексы заданного элемента в массиве на ruby?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jazmyne , 2 года назад

@otha_marks 

Для того, чтобы найти все индексы заданного элемента в массиве на Ruby, можно воспользоваться методом each_with_index.


Вот пример:

1
2
3
4
5
6
7
8
9
arr = [1, 2, 3, 2, 4, 2, 5]
element = 2
indices = []

arr.each_with_index do |value, index|
  indices << index if value == element
end

puts indices # => [1, 3, 5]


В этом примере мы создаем массив arr, который содержит несколько повторяющихся значений. Затем мы выбираем элемент, который мы хотим найти (element = 2) и создаем пустой массив indices, который будет содержать индексы, где мы найдем этот элемент.


Затем мы используем метод each_with_index для прохода по всем элементам массива. Если значение элемента равно element, мы добавляем индекс в массив indices.


В конце мы выводим массив indices, который содержит все индексы элемента 2 в массиве arr.

Пользователь

от rudolph_senger , 6 месяцев назад

@otha_marks 

Есть и более краткий и удобный способ сделать это, используя метод each_index в Ruby. Для вашего примера кода выглядит следующим образом:

1
2
3
4
5
arr = [1, 2, 3, 2, 4, 2, 5]
element = 2
indices = arr.each_index.select { |i| arr[i] == element }

puts indices # => [1, 3, 5]


Этот код имеет такую же функциональность как и предыдущий пример, но в более лаконичной форме. Мы используем метод each_index для обхода только индексов массива и затем фильтруем индексы, выбирая только те, где значение элемента равно заданному элементу.