如何将数组转换为哈希,其键是数组值,值是数组的索引

use*_*188 1 ruby

数组格式如下(值不会在数组中重复):

["ID", nil, "MO"]
Run Code Online (Sandbox Code Playgroud)

我想删除nil,但哈希值应该将索引存储在原始数组中.预期结果:

{
  "ID" => 0,
  "MO" => 2
}
Run Code Online (Sandbox Code Playgroud)

我怎么能以优雅的方式做到这一点?

saw*_*awa 5

["ID", nil, "MO"]
.each.with_index.with_object({}){|(e, i), h| h[e] = i unless e.nil?}
# => {"ID"=>0, "MO"=>2}
Run Code Online (Sandbox Code Playgroud)

要么

["ID", nil, "MO"]
.each.with_index.to_h.reject{|k, v| k.nil?}
# => {"ID"=>0, "MO"=>2}
Run Code Online (Sandbox Code Playgroud)