我不确定“transpose”是否是正确的术语,但我想使用jq
来转置一个二维对象,例如这样:
[
{
"name": "A",
"keys": ["k1", "k2", "k3"]
},
{
"name": "B",
"keys": ["k2", "k3", "k4"]
}
]
我希望将其转换为:
{
"k1": ["A"],
"k2": ["A", "B"],
"k3": ["A", "B"],
"k4": ["A"],
}
我可以使用
.[] | {key: .keys[], name}
来拆分对象,以获取键和名称的列表,或者我可以使用.[] | {(.keys[]): [.name]}
来获取键值对的集合{"k1": ["A"]}
等等,但是我不确定最终的连接步骤是否正确。这两种方法都是正确的方向吗?是否有更好的方法?
group_by
了,但是我必须承认后面的嵌套map
还是有点让我困惑。是否有更简单的示例或文档来解释这种行为? - cmbuckleygroup_by
时,它会将所有具有匹配键的项放入一个数组中。因此,该内部数组中的每个项都将具有相同的键值。所以在那个时候的目标是将数组的数组转换为对象的数组。我们希望value
属性是在该数组中找到的名称,因此使用了内部映射。 - Jeff Mercado。我把它看作是嵌套的
foreach`,我想这就是我的问题所在 :-) - cmbuckley