从数组中设置哈希值

问题描述 投票:0回答:1

我有一个哈希。

row = {
            'name' => '',
            'description' => '',
            'auth' => '',
            'https' => '',
            'cors' => '',
            'url' => ''
        }

我也有一个数组

["Cat Facts", "Daily cat facts", "No", "Yes", "No", "https://example.com/"]

我怎样才能抓取数组元素 并将它们设置为哈希中每个键的值?

ruby hash
1个回答
3
投票

比方说 row 是你的哈希和 values 是你的数组

row.keys.zip(values).to_h
 => {"name"=>"Cat Facts", "description"=>"Daily cat facts", "auth"=>"No", "https"=>"Yes", "cors"=>"No", "url"=>"https://example.com/"} 

当然,如果它们的顺序是正确的,那就可以了。


2
投票
h = { 'name'=>'',
      'description'=>'',
      'auth'=>'',
      'https'=>'',
      'cors'=>'',
      'url'=>'' }

arr = ["Cat Facts", "Daily cat facts", "No", "Yes", "No",
       "https://example.com/"]

enum = arr.to_enum
  #=> #<Enumerator: ["Cat Facts", "Daily cat facts", "No",
  #                  "Yes", "No", "https://example.com/"]:each>

h.transform_values { enum.next }
  #=> { "name"=>"Cat Facts",
  #     "description"=>"Daily cat facts",
  #     "auth"=>"No",
  #     "https"=>"Yes",
  #     "cors"=>"No",
  #     "url"=>"https://example.com/" }

请看 Hash#transform_values. Array#each 可代替 Kernel#to_enum.

如果 arr 可变异 enum.next 可替换为 arr.shift.


0
投票

给定哈希和数组。

row = { 'name' => '', 'description' => '', 'auth' => '', 'https' => '', 'cors' => '', 'url' => '' }
val = ["Cat Facts", "Daily cat facts", "No", "Yes", "No", "https://example.com/"]

一个选择是使用 Enumerable#each_with_index 而变换哈希值的。

row.transform_values!.with_index { |_, i| val[i] }
row
#=> {"name"=>"Cat Facts", "description"=>"Daily cat facts", "auth"=>"No", "https"=>"Yes", "cors"=>"No", "url"=>"https://example.com/"}

The bang ! 改变原来的Hash。

© www.soinside.com 2019 - 2024. All rights reserved.