How to map an array of objects in React How to map an array of objects in React reactjs reactjs

How to map an array of objects in React


What you need is to map your array of objects and remember that every item will be an object, so that you will use for instance dot notation to take the values of the object.

In your component

 [    {        name: 'Sam',        email: 'somewhere@gmail.com'    },    {        name: 'Ash',        email: 'something@gmail.com'    }].map((anObjectMapped, index) => {    return (        <p key={`${anObjectMapped.name}_{anObjectMapped.email}`}>            {anObjectMapped.name} - {anObjectMapped.email}        </p>    );})

And remember when you put an array of jsx it has a different meaning and you can not just put object in your render method as you can put an array.

Take a look at my answer at mapping an array to jsx


I think you want to print the name of the person or both the name and email :

const renObjData = this.props.data.map(function(data, idx) {    return <p key={idx}>{data.name}</p>;});

or :

const renObjData = this.props.data.map(function(data, idx) {   return ([       <p key={idx}>{data.name}</p>,       <p key={idx}>{data.email}</p>,   ]);});


@FurkanO has provided the right approach. Though to go for a more cleaner approach (es6 way) you can do something like this

[{    name: 'Sam',    email: 'somewhere@gmail.com' }, {    name: 'Ash',    email: 'something@gmail.com' }].map( ( {name, email} ) => {    return <p key={email}>{name} - {email}</p>})

Cheers!