2017-02-02 3 views
0

Я использую Ruby 2.4. Если я хочу, чтобы найти первый не всухую элемент массива можно использоватьКак найти индекс первого элемента non-nil в массиве?

a.find { |x| !x.nil? } 

но как найти индекс, где произошло, что первый элемент не-ноль?

+0

Пожалуйста, прочтите «[mcve]». При запросе нам нужны образцы входных данных, которые демонстрируют проблему. –

ответ

4

Используйте либо методы index, либо find_index.

a.index { |x| !x.nil? } 

Возвращает индекс первого объекта в арном таким образом, что объект является == в OBJ. Если вместо аргумента задан блок, возвращает индекс первого объекта, для которого блок возвращает true. Возвращает nil, если совпадение не найдено.

https://ruby-doc.org/core-2.2.0/Array.html#method-i-find_index

1

Pro Типп, вы можете использовать methodsolver драгоценный камень, чтобы найти способы, как что

solve { [nil,7,7,nil,nil,nil].___ { |x| !x.nil? } == 1 } 

гравюр

Found 2 methods for #___ 
- Array#find_index 
- Array#index 

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

Смежные вопросы