Map, Reduce and Filter are three functions which operate on a given array of values.

**Map**function works like a projection, where we can project each value from the input set into some transformed output.- It takes a callback function which has two parameters – the current value and the index of the current value and expects a return value from the callback.

```
let arr = [1, 2, 3, 4, 5];
let result2 = arr.map(function (current, index) {
return current % 2;
});
// output:
[ 1, 0, 1, 0, 1 ]
```

**Reduce**function works like an aggregate function, where we can create an aggregation from a given input set.- It takes a callback function which has three parameters – the previous value, the current value and the current index and expects a return value from the callback, which is applied onto the next array element iteration.

```
let result1 = arr.reduce(function (prev, current) {
console.log(`${prev}, ${current}`);
return prev + current;
});
// output:
1, 2
3, 3
6, 4
10, 5
result1: 15
```

**Filter**function is an extraction function where the input array is filtered based on a condition.- It takes a callback function which has two parameters – the current value and the current index and expects a boolean return value which represents whether the current element satisfies the condition or not.

```
let result3 = arr.filter(function (current, index) {
return current % 2 === 0;
});
// output:
[ 2, 4 ]
```