[xquery-talk] From map entry pairs to a pair of arrays

Joe Wicentowski joewiz at gmail.com
Sat Jul 15 08:41:22 PDT 2017


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://x-query.com/pipermail/talk/attachments/20170715/41252d3a/attachment.html>


More information about the talk mailing list