Hey,

I build fairly complex data structure (from yaml files) in my template that I want to filter with the `where`

function, but I simply couldn’t make it work. It took me quite some time to narrow down the (possible) reason enough to construct a minimal demonstrative example.

The following example works as expected, the `GetSortedMapValues`

returns an array and the `where`

function filters it based on the key ‘c’. The result is `[map[a:2 b:7 c:7 d:[1 2 3] e:0xc000ecdee0]]`

.

```
$q := newScratch
$q.SetInMap "foo" "A" (dict "a" 1 "b" 7 "c" 4)
$q.SetInMap "foo" "B" (dict "a" 2 "b" 7 "c" 7 "d" (slice 1 2 3) "e" newScratch)
where ($q.GetSortedMapValues "foo") "c" 7
```

But int the next example, where key ‘c’ holds an expression (that results 7), not a constant (and it is the case in my real code: I store a calculated value), the `where`

function returns an empty array (`[]`

).

```
$q2 := newScratch
$q2.SetInMap "foo" "A" (dict "a" 1 "b" 7 "c" 4)
$q2.SetInMap "foo" "B" (dict "a" 2 "b" 7 "c" (add 3 4) "d" (slice 1 2 3) "e" newScratch)
where ($q2.GetSortedMapValues "foo") "c" 7
```

I would expect that the expression is evaluated and the `where`

uses the value of that expression when it comes to filter. Using the expression in `where`

gives the right result: `[map[a:2 b:7 c:7 d:[1 2 3] e:0xc001e1a780]]`

.

```
$q3 := newScratch
$q3.SetInMap "foo" "A" (dict "a" 1 "b" 7 "c" 4)
$q3.SetInMap "foo" "B" (dict "a" 2 "b" 7 "c" (add 3 4) "d" (slice 1 2 3) "e" newScratch)
where ($q3.GetSortedMapValues "foo") "c" (add 3 4)
```

Is it possible to apply the `where`

function on the value of the expression instead of the expression itself?

Thank you in advance,

Gergő

environment: Hugo v0.55.6, linux64, go 1.12.4

ps: I thought it’s worth to mention that I can sort this data structure based on these calculated values, so `sort`

function works as I expect.