2つの配列をマージしてオブジェクトの配列を作る(How to merge/zip two arrays into an array in jq)
一瞬わからなくて、グーグルなどで検索したけどよくわからなかったものの、ドキュメントを読み直したら解けた。
これは、パイプラインを理解してないと思いつかないと思う。
次のようなオブジェクトがあり、 names と scores は同じ長さの配列かつ names は重複のない配列として、それらをマージして (name, score) を組みにしたオブジェクトを作るのが目標とする。
item: names: - foo - bar - baz scores: - 10 - 20 - 30
names と scores に名前を付けて参照可能にしておいて、 names をメインのイテレーターとしてインデックスを自身から取得して、そのインデックスで scores から score を取得する
.item.names as $names |
.item.scores as $scores |
[
.item.names[] |
. as $name |
{
name: .,
score: $scores[
$names | index($name)
]
}
]
