使用JQ将数组映射到带有索引的对象 - 如何实现

3

非常简单:

我有:'["a","b","c"]'

我想要:

{
  "1":"a",
  "2":"b",
  "3":"c"
}

我正在处理的内容。

echo '["a","b","c"]' | jq '. | map({(index(.)) : (.)})'

我得到的结果(似乎是在逐渐缩小的数组上运行):

 echo '["a","b","c"]' | jq '. | map(index((.)))'
[
  0,
  0,
  0
]
1个回答

5

一个功能性的解决方案:

[to_entries[] | {(.key+1|tostring): .value}] | add

或者,更简洁地说:

with_entries(.key |= (1+.|tostring))

或者,更加通俗易懂地说:

. as $in
| reduce range(0;length) as $i (null; 
    . + {($i+1|tostring): $in[$i]})

2
Prosaically: 当你以平凡、直截了当的方式做某事时,就是以平铺直叙的方式来完成它。Succinctly: 一种清晰地表达所需内容,不含不必要言辞的方式。 - 0stone0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接