Установка значений ha sh из массива - PullRequest
1 голос
/ 24 апреля 2020

У меня есть га sh:

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

, а также у меня есть массив:

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

Как я могу получить элементы массива и установить их в качестве значений для каждого введите га sh?

Ответы [ 3 ]

3 голосов
/ 24 апреля 2020

Допустим, row это ваш ха sh, а 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 голосов
/ 24 апреля 2020
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 ​​. Массив # каждый может использоваться вместо Kernel # to_enum .

Если arr может быть мутирован, enum.next можно заменить на arr.shift.

0 голосов
/ 25 апреля 2020

Учитывая ha sh и массив:

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

Один из вариантов - использовать Enumerable # each_with_index при преобразовании значений ha sh:

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/"}

Взрыв ! меняет оригинал Ха sh.

...