如何在jq
中产生数组的笛卡尔平方?
输入:
[0,1,2]
输出:
[[0,0],[0,1],[0,2],
[1,0],[1,1],[1,2],
[2,0],[2,1],[2,2]]
我找到了使它能够与算术运算一起使用的简单方法,但是逗号运算符没有运气。
答案 0 :(得分:2)
按指定顺序生成对数组的一种方法如下:
NUL
或者,避免使用$变量:
def data: [0,1,2];
data | [.[] as $i | .[] as $j | [$i, $j] ]
[range(0;3) | [.] + (range(0;3)|[.])]
产生:
def Mij(n):
[ range(0;n) as $i
| [ range(0;n) as $j
| [$i, $j] ] ];
Mij(3)
答案 1 :(得分:0)
和其他解决方案,基于JSON的步行路径Unix工具- jtc
:
bash $ echo '[0,1,2]' | jtc -w'[:]<i>v[^0][:]<j>v' -T'[ {{i}}, {{j}} ]' -rj
[ [ 0, 0 ], [ 0, 1 ], [ 0, 2 ], [ 1, 0 ], [ 1, 1 ], [ 1, 2 ], [ 2, 0 ], [ 2, 1 ], [ 2, 2 ] ]
bash $
PS>披露:我是jtc
工具的创建者