数组中第一个非零值的索引

Aar*_*ken 3 ruby

找到数组中第一个非零值的索引,最好的方法(在成语和效率方面)是什么?

我想出来first_non_null_index = array.index(array.dup.compact[0])......但有更好的方法吗?

Mar*_*off 6

Ruby 1.9有这样的find_index方法:

ruby-1.9.1-p378 > [nil, nil, false, 5, 10, 20].find_index { |x| not x.nil? } # detect false values
 => 2 
ruby-1.9.1-p378 > [nil, nil, false, 5, 10, 20].find_index { |x| x }
 => 3 
Run Code Online (Sandbox Code Playgroud)

find_index如果在早于1.8.7的Ruby中需要,似乎可以在backports中使用.