Forum Discussion
Anonymous
7 years agoNot applicable
Combine two arrays, alternating their elements
I'm thinking how one would go about doing this in PQ. Input : arr1[] = {1, 2, 3, 4, 5, 6}
arr2[] = {11, 22, 33, 44}
Output: {1, 11, 2, 22, 3, 33, 4, 44, 5, 6}
Input : arr1[] = {1, 2, 3,...
- 7 years ago
Assuming the arrays are list objects in the Query editor, you can use this function:
List.Select(List.Combine(List.Zip({Array1, Array2})), each _ <> null)
rohanjaiswal
6 years agoFrequent Visitor
Output: {1, 11, 2, 22, 3, 33, 4, 44, 5, 6}ImkeF How to get each combination into separate row ?
| ID | value |
| 1 | 1,11 |
| 2 | 2,22 |
| 3 | 3,33 |
Anonymous
6 years agoNot applicable
you could use the tool Merge Columns, after having selected the involved columns:
then choice the separator you like:
PS
I intruded into the discussion to show a different approach, but only for fun.
I just wanted to experiment with recursion and I wrote this Anonymous.
let
interleave=(a1,a2,pos) =>
let
la1=List.Count(a1),
la2=List.Count(a2),
gl=if la1 >= la2 then a1 else a2,
ll=if la1 < la2 then a1 else a2,
ins_a1=List.InsertRange(gl,2*pos+1,{ll{pos}}),
p=pos+1
in
if p < List.Min({la1,la2}) then @interleave(ins_a1,ll,p) else ins_a1
in interleave
- Anonymous6 years agoNot applicable
if a generalized List.InsertRange function, such as the following InsertRanges (which is only a function toy), were available,
let InsertRanges=(lst,positions,ranges, optional p) => let cur=if p=null then 0 else p, pos=positions{cur},range=if Value.Type(ranges{cur})= type list then ranges{cur} else {ranges{cur}}, inserted=List.InsertRange(lst,pos,range), next=cur+1 in if next < List.Count(positions) then @InsertRanges(inserted,positions,ranges,next) else inserted in InsertRangesthe interleave problem could be solved with a simple call.
= InsertRanges({1,2,3,4,5,6,7,8}, {1,3,5,7}, {11,22,33,44})