如何使用jq将数组中对象的数组索引注入到对象中

时间:2016-07-08 22:10:18

标签: 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" : "World, p:0 } ]

2 个答案:

答案 0 :(得分:1)

你可以这样做:

[ keys[] as $i | .[$i] | .p=$i ]

或者,你可以使用这样的to_entries使其工作:

[ to_entries[] | (.value.p=.key).value ]

两者都产生:

[
  {
    "w": "Hello",
    "p": 0
  },
  {
    "w": "World",
    "p": 1
  }
]

答案 1 :(得分:0)

以下是使用reduce

的解决方案
reduce keys[] as $i (.; .[$i].p = $i)