如何找到数组中第一个非零元素的索引?

时间:2017-02-02 17:59:13

标签: arrays ruby null

我正在使用Ruby 2.4。如果我想找到数组的第一个非零元素,我可以使用

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

但是如何找到第一个非零元素出现位置的索引?

2 个答案:

答案 0 :(得分:4)

使用indexfind_index方法。

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

返回ary中第一个对象的索引,使对象为== to obj。如果给出一个块而不是一个参数,则返回该块返回true的第一个对象的索引。如果找不到匹配则返回nil。

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

答案 1 :(得分:1)

Pro tipp,您可以使用methodsolver gem来查找类似的方法

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

打印

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

方法求解器对接收器类上的所有方法进行强力搜索,并返回块求值为true的那些方法。它尽最大努力避免危险的方法,但最好在可能导致危险副作用的类上谨慎使用。