Создать список списков из списка json объектов ruby - PullRequest
4 голосов
/ 07 октября 2019

У меня есть список объектов json, примерно такой:

test = [{"a": 1, "b": 2, "c": 3}, {"a": 4, "b": 5, "c":6}]

Я хочу получить поля 'a' и 'c' из вышеприведенного списка тестов, чтобы создать список из списка примерно так::

[[1, 4], [3, 6]]

Идея состоит в том, чтобы составить список всех значений a, затем значений c.

Когда я использую pluck:

test.pluck(:a, :c)

Я получаю вывод, подобный этому:

[[1, 3], [4, 6]]

Один из подходов, который я попробовал, работает нормально.

res = []
res << test.pluck(:a)
res << test.pluck(:c)

Но я думаю, что было бы лучше, если бы я получил решение с одним или двумя вкладышами,
с или без inbuilt function, потому что число полей в будущем может увеличиться.

Ответы [ 2 ]

7 голосов
/ 07 октября 2019

Вы искали следующее,

%i(a c).map { |x| test.map { |e| e[x] } }
4 голосов
/ 07 октября 2019

Вы можете использовать Array#transpose для результата pluck. Предполагается, что массив представляет строки или столбцы, и меняет представление вокруг.

test.pluck(:a, :c).transpose
#=> [[1, 4], [3, 6]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...