У меня есть хеш, который содержит 2 массива хэшей
h = {
"budget_options"=>[
{"amount"=>"1.0", "text"=>"budget options"},
{"amount"=>"2.0", "most_popular"=>"true", "text"=>"budget options"},
{"amount"=>"3.0", "text"=>"budget options"}
],
"pcb_budget_options"=>[
{"amount"=>"1.0"},
{"amount"=>"0.0"},
{"amount"=>"-1.0", "most_popular"=>"true"}
]
}
Я просто хочу преобразовать значение «most_popular» из строки в логическое значение. Я пытался это сделать, но это заканчивается временной сложностью n3.
Есть ли встроенный метод для этого? Любая помощь будет оценена.
Решение проблемы
Я думаю, это делает то, что вы хотите. Я не рассчитал O этого. Я использовал трюк Marshal#dump/load, чтобы сделать глубокую копию объекта, прежде чем манипулировать им.
mp = "most_popular"
obj = Marshal.load(Marshal.dump(h))
obj.each_key {|k| obj[k].each {|v| v[mp] = v[mp] == "true"? true: false if v[mp] }}
Также см. комментарий Кэри ниже для немного более краткой версии внутреннего блока.
Комментариев нет:
Отправить комментарий