JSONata中$zip函数传数组参数的用法及未知子数组场景问题
JSONata中动态传入多子数组调用$zip的解决方法
问题现象
直接以多参数形式调用$zip时,能得到预期的数组转置结果:
$zip([1, 2, 3], [4, 5, 6], [7, 8, 9])
结果:
[ [1, 4, 7], [2, 5, 8], [3, 6, 9] ]
但将所有子数组存入一个数组变量后,直接传入$zip会得到嵌套错误的结果:
( $arr := [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; $zip($arr); )
结果:
[ [ [1, 2, 3] ], [ [4, 5, 6] ], [ [7, 8, 9] ] ]
解决方法
使用JSONata的$spread()函数将数组展开为多个独立参数,再传入$zip,代码示例:
( $arr := [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; $zip($spread($arr)); )
该写法会自动将数组变量中的每个子数组作为单独参数传递给$zip,无论子数组数量多少,都能得到正确的转置结果。
内容的提问来源于stack exchange,提问作者Robin Mackenzie
相关产品推荐
相关产品推荐

