Indexing 如何使用jq将数组中对象的数组索引注入到对象中
给定一个对象数组,我想插入一个属性及其在数组中的位置。 例如:Indexing 如何使用jq将数组中对象的数组索引注入到对象中,indexing,jq,Indexing,Jq,给定一个对象数组,我想插入一个属性及其在数组中的位置。 例如: [ { "w" : "Hello" }, { "w" : "World } ] 我想提出: [ { "w" : "Hello", p: 0 }, { "w" : "World, p:1 } ] 其中,p是数组中从零开始的位置 有没有办法获取元素的索引? 我尝试过这个,但不起作用: keys[] as $i | [ .[] | .p= $i ] 我得到: [ { "w" : "Hello", p: 0 }, { "w
[ { "w" : "Hello" }, { "w" : "World } ]
我想提出:
[ { "w" : "Hello", p: 0 }, { "w" : "World, p:1 } ]
其中,p是数组中从零开始的位置
有没有办法获取元素的索引?
我尝试过这个,但不起作用:
keys[] as $i | [ .[] | .p= $i ]
我得到:
[ { "w" : "Hello", p: 0 }, { "w" : "World, p:0 } ]
你可以这样做:
[ keys[] as $i | .[$i] | .p=$i ]
[ to_entries[] | (.value.p=.key).value ]
或者,您可以使用来创建条目,如下所示:
[ keys[] as $i | .[$i] | .p=$i ]
[ to_entries[] | (.value.p=.key).value ]
两者都产生:
[
{
"w": "Hello",
"p": 0
},
{
"w": "World",
"p": 1
}
]
下面是一个使用reduce
reduce keys[] as $i (.; .[$i].p = $i)
我想我明白了:to|u entries | map({name:.value,index:.key})|[.]|.name.p=.index].[.]|.name]
!比我自己的解决方案简单得多。