Skip to content
Permalink
Browse files

Update DOCS.md

  • Loading branch information
antonmedv committed Jan 9, 2020
1 parent e5aef9f commit e7619aeece7f30e52063591d1487874c36b2dec7
Showing with 45 additions and 0 deletions.
  1. +45 −0 DOCS.md
45 DOCS.md
@@ -5,6 +5,7 @@
+ [Anonymous function](#anonymous-function)
+ [Binding](#binding)
+ [Dot](#dot)
+ [Map](#map)
+ [Chaining](#chaining)
+ [Updating](#updating)
+ [Edit-in-place](#edit-in-place)
@@ -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:

0 comments on commit e7619ae

Please sign in to comment.
You can’t perform that action at this time.