如何在 jq 中生成笛卡尔方块?

How to produce cartesian square in jq?

如何在 jq 中生成数组的笛卡尔平方?

输入:

[0,1,2]

输出:

[[0,0],[0,1],[0,2],
 [1,0],[1,1],[1,2],
 [2,0],[2,1],[2,2]]

我找到了使它适用于算术运算的简单方法,但用逗号运算符就不行了。

笛卡尔积

按指定顺序生成对数组的一种方法如下:

def data: [0,1,2];

data | [.[] as $i | .[] as $j | [$i, $j] ] 

或者,避免 $-变量:

[range(0;3) | [.] + (range(0;3)|[.])]

m[i][j] = [i,j]

的方阵
def Mij(n):
  [ range(0;n) as $i
    | [ range(0;n) as $j
        | [$i, $j] ] ];


Mij(3)

产生:

[[[0,0],[0,1],[0,2]],[[1,0],[1,1],[1,2]],[[2,0],[2,1],[2,2]]]