Преобразование элементов массива в хэши - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть массив со следующими элементами:

results = ["test=complete", "test2=passed", "test3=failed", "test4=successful"]

Я хочу преобразовать этот массив в хеш со следующими ключами и значениями:

results_hash = {"test": "complete", "test2": "passed", "test3": "failed", "test4": "successful"}

Как мне это сделать?этот?Не уверен, лучше ли использовать set, hash и т. Д.

Ответы [ 3 ]

0 голосов
/ 03 декабря 2018

Это мое решение:

array = ['test=passed', 'test=failed']

num_of_elements = array.length 



x = array[0].split("")

y = array[1].split("")

array = x + y

x.delete_if {|x| x.match('=')}
y.delete_if {|x| x.match('=')}

test_arr = x[0..3].join()
fail = x[4..9].join()

test_arr_2 = y[0..3].join()

fail_2 = y[4..9].join()

results = {}

results.compare_by_identity

results["#{test_arr}"] = fail
results["#{test_arr_2}"] = fail_2


puts results
0 голосов
/ 03 декабря 2018

В Ruby 2.6:

results.to_h{|s| s.split("=").then{|k, v| [k.to_sym, v]}}
# => {:test=>"complete", :test2=>"passed", :test3=>"failed", :test4=>"successful"}
0 голосов
/ 03 декабря 2018
results = ["test=complete", "test2=passed", "test3=failed", "test4=successful"]
results_hash = results.map{|str| str.split("=") }.to_h
# => {"test"=>"complete", "test2"=>"passed", "test3"=>"failed", "test4"=>"successful"}

Редактировать: В комментариях @sawa ключи должны быть символами.Это способ:

results.map{|str| a,b = str.split("="); [a.to_sym, b] }.to_h
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...