mirror of
https://github.com/stedolan/jq.git
synced 2024-05-11 05:55:39 +00:00
builtin.jq: simpler and faster transpose (#2758)
This commit is contained in:
@ -181,14 +181,7 @@ def combinations(n):
|
||||
| combinations;
|
||||
# transpose a possibly jagged matrix, quickly;
|
||||
# rows are padded with nulls so the result is always rectangular.
|
||||
def transpose:
|
||||
if . == [] then []
|
||||
else . as $in
|
||||
| (map(length) | max) as $max
|
||||
| length as $length
|
||||
| reduce range(0; $max) as $j
|
||||
([]; . + [reduce range(0;$length) as $i ([]; . + [ $in[$i][$j] ] )] )
|
||||
end;
|
||||
def transpose: [range(0; map(length)|max // 0) as $i | [.[][$i]]];
|
||||
def in(xs): . as $x | xs | has($x);
|
||||
def inside(xs): . as $x | xs | contains($x);
|
||||
def repeat(exp):
|
||||
|
@ -1487,6 +1487,10 @@ transpose
|
||||
[[1], [2,3]]
|
||||
[[1,2],[null,3]]
|
||||
|
||||
transpose
|
||||
[]
|
||||
[]
|
||||
|
||||
ascii_upcase
|
||||
"useful but not for é"
|
||||
"USEFUL BUT NOT FOR é"
|
||||
|
Reference in New Issue
Block a user