我想看看 jq with js 是否可以幫助我實作以下目標:
我有以下物件:
[
{
"a": 1,
"b": 2
},
{
"a": 11,
"b": 12
},
{
"a": 21,
"b": 22
}
]
和以下陣列:
[3,13,33,44]
我想根據它們的順序將陣列項作為額外欄位添加到物件中,當陣列長/短于物件陣列時,它也應該起作用。
結果應如下所示:
[
{
"a": 1,
"b": 2,
"c": 3
},
{
"a": 11,
"b": 12,
"c": 13
},
{
"a": 21,
"b": 22,
"c": 33
}
]
uj5u.com熱心網友回復:
假設您對 jq 解決方案,物件陣列位于檔案 objects.json 中,并且您愿意按照以下幾行呼叫 jq:
jq --argjson c '[3,13,33,44]' -f program.jq objects.json
我們現在還假設結果不應該是有損的,即結果陣列的長度應該是兩個輸入陣列長度中的較大者。
那么下面的 jq 程式將會很有趣:
< objects.json jq --argjson c '[3,13,33,44]' '
({$c}|keys[0]) as $k
| [., ($c | map ( {($k): .} ))]
| transpose
| map(add)
'
注意鍵名(“c”)是如何從命令列上的引數名派生的。
有多種方法可以修剪結果,使其具有兩個陣列中較短的長度,將其留作練習似乎是合理的。
uj5u.com熱心網友回復:
使用 to_entries :
jq --argjson c '[4,13,33,44]'\
'to_entries|
map(
.value (if .key<($c|length) then {c:$c[.key]} else {} end)
)' objects.json
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/414916.html
標籤:
下一篇:根據自定義順序對字串陣列進行排序
