преобразовать хешированный массив в строку - PullRequest
1 голос
/ 10 марта 2011
hash = { "d" => [11, 22], "f" => [33, 44, 55] }

есть ли один лайнер для получения строки, как показано ниже:

d:11,d:22,f:33,f:44,f:55

спасибо!

Отлично, спасибо за совет. Почему этот код не работает, единственное отличие - я заменил vs.map на vs.each:

hash.map {|k,vs| vs.each {|v| "#{k}:#{v}"}}.join(",")

, который возвращает "11,22,33,44,55"

Ответы [ 2 ]

3 голосов
/ 10 марта 2011

Используйте два вложенных вызова map, чтобы получить массив массивов строк «ключ: значение», а затем используйте join, чтобы превратить его в одну строку, разделенную запятыми:

hash.map {|k,vs| vs.map {|v| "#{k}:#{v}"}}.join(",")
0 голосов
/ 10 марта 2011
hash.keys.map {|k| hash[k].map {|v| "#{k}:#{v}"}}.flatten.join(",")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...