Hi,
I would say

```
let $letters-numbers := map { "a": 1, "b": 2, "c": 3 }
let $keys := map:keys($letters-numbers)
return (
  array { $keys },
  array { for $key in $keys return map:get($letters-numbers, $key) }
)
```
> Le 15 juil. 2017 à 11:41, Joe Wicentowski <[email protected]> a écrit :
> 
> Hi all,
> 
> Is there an efficient way to transform entries in a map into two arrays, one 
> containing the keys and one containing the values?  Here's my attempt:
> 
> ```
> xquery version "3.1";
> 
> let $letters-numbers := map { "a": 1, "b": 2, "c": 3 }
> return 
>     (
>         array { map:keys($letters-numbers) },
>         array { $letters-numbers?* }
>     )
> ```
> 
> This successfully takes `map { "a": 1, "b": 2, "c": 3 }` and returns (["a", 
> "b", "c"], [1, 2, 3]), but the way it iterates through the map twice strikes 
> me as somewhat inefficient.  Is there a better way to reduce this to a single 
> pass through the map, or is this actually the best approach?
> 
> Joe
> _______________________________________________
> [email protected]
> http://x-query.com/mailman/listinfo/talk


_______________________________________________
[email protected]
http://x-query.com/mailman/listinfo/talk

Reply via email to