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]
!比我自己的解决方案简单得多。