Skip to content

Commit

Permalink
Update DOCS.md
Browse files Browse the repository at this point in the history
  • Loading branch information
antonmedv committed Jan 9, 2020
1 parent e5aef9f commit e7619ae
Showing 1 changed file with 45 additions and 0 deletions.
45 changes: 45 additions & 0 deletions DOCS.md
Expand Up @@ -5,6 +5,7 @@
+ [Anonymous function](#anonymous-function)
+ [Binding](#binding)
+ [Dot](#dot)
+ [Map](#map)
+ [Chaining](#chaining)
+ [Updating](#updating)
+ [Edit-in-place](#edit-in-place)
Expand Down Expand Up @@ -71,6 +72,50 @@ $ echo '{"foo": "bar"}' | fx .
}
```

### Map

One of the frequent operations is mapping some function on an array. For example, to extract some values.

```
[
{
"author": {
"name": "antonmedv"
},
...
},
{...},
{...},
...
]
```

And we want to collect names of each object in array. We can do this by mapping anonymous function:

```bash
$ cat ... | fx '.map(x => x.author.name)'
```

Or we can do the same by using `@` prefix:

```bash
$ cat ... | fx @.author.name
[
"antonmedv",
...
]
```

Expression followed by `@` symbol will be mapped to each element of array.

> Note what `@` can be applied to map object values.
> ```bash
> $ echo '{"foo": 1, "bar": 2}' | fx @+1
> [2, 3]
> ```
>
> Also note what symbol `@` alone is equivalent of `Object.values` function.
### Chaining

You can pass any number of anonymous functions for reducing JSON:
Expand Down

0 comments on commit e7619ae

Please sign in to comment.