从 json 对象列表 ruby 创建列表列表



我有一个json对象列表,如下所示:

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

我想从上面的测试列表中获取'a''c'字段,以创建一个列表列表,如下所示:

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

这个想法是列出a的所有值,然后是c的值。

当我使用弹拨时:

test.pluck(:a, :c)

我得到这样的输出:

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

我尝试过一种方法,效果很好。

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

但我认为如果我得到一个或两个衬里解决方案会更好,
带或不带inbuilt function,因为将来的字段数可能会增加。

您正在寻找以下内容,

%i(a c).map { |x| test.map { |e| e[x] } }

您可以在pluck结果上使用Array#transpose。它假定数组表示行或列并交换表示形式。

test.pluck(:a, :c).transpose
#=> [[1, 4], [3, 6]]

最新更新