Удаление квадратных скобок из массива хэшей для значения - PullRequest
0 голосов
/ 08 ноября 2018

У меня следующий хэш-массив

A = [{"name" => ["xx"], "status" => ["true"]}, {"name" => ["yy"], "status" => ["true"]}

Я попробовал следующий код, чтобы убрать квадратные скобки

A.to_s.gsub("\\[|\\]", "")

также пробовал с кодом

p A.map { |hash| hash.each_with_object({}) { |(k, v), hash| hash[k] = v.first } }

но это не работает.

Как убрать квадратные скобки, чтобы получить следующий вывод

A = [{"name" => "xx", "status" => "true"}, {"name" => "yy", "status" => "true"}

Пожалуйста, помогите

1 Ответ

0 голосов
/ 08 ноября 2018

Поскольку они являются строками внутри массивов, [] это представление, которое делает Ruby. Попробуйте получить доступ к первому элементу для каждого значения ключа в этих хешах:

a = [{"name" => ["xx"], "status" => ["true"]}, {"name" => ["yy"], "status" => ["true"]}]
p a.map { |hash| hash.transform_values(&:first) }
# [{"name"=>"xx", "status"=>"true"}, {"name"=>"yy", "status"=>"true"}]

В зависимости от версии Ruby у вас может не быть доступных transform_values. Простой each_with_object будет работать аналогично в этом случае:

p a.map { |hash| hash.each_with_object({}) { |(k, v), hash| hash[k] = v.first } }
# [{"name"=>"xx", "status"=>"true"}, {"name"=>"yy", "status"=>"true"}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...