一瞬わからなくて、グーグルなどで検索したけどよくわからなかったものの、ドキュメントを読み直したら解けた。
これは、パイプラインを理解してないと思いつかないと思う。
次のようなオブジェクトがあり、 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) ] } ]