In this tutorial you’ll learn how you can use the function map
to transform the JavaScript array
by applying a mapping function to all of its elements.
The biggest drawback of the forEach
loop is that it doesn’t return anything useful.
If we want to get an array doubleArr
where each element is equal to the element arr
multiplied by two, then forEach
won’t help.
To get an array equal in length to the initial array, but with modified elements, use the map
function.
const arr = [ -1, 2, 4, 0, -5, 7 ];
const doubleArr = arr.map(item => item * 2);
console.log(arr); // [ -1, 2, 4, 0, -5, 7 ]
console.log(doubleArr); // [ -2, 4, 8, 0, -10, 14 ]
Note that the array arr
has not changed in any way.
Together with filter
, the map
method is one of the most used array methods in JS.
Both filter
and map
return an array, so you could combine them into chains.
Let’s go back to the user example. The task is to create an array with the names of all users whose age is less than 18 years.
Let’s first apply the filter
function to throw away all the underage users and then use map
to
transform an array of objects to an array of strings.
const users = [
{name: 'Jake', age: 15},
{name: 'John', age: 16},
{name: 'Jill', age: 25},
{name: 'Bill', age: 82},
];
const kidsNames = users
.filter(user => user.age < 18)
.map(user => user.name);
console.log(kidsNames); // [ 'Jake', 'John' ]
It will become very easy for you to read such code after you get used to the syntax.
The task of creating a new array from an existing one arises so often that the forEach
loop can safely be called
the most useless method in JavaScript. It’s almost always better to use map
or a regular for
loop instead.