## Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

### Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

# Is this a more effective solution to the second challenge in this lesson?

The second challenge in the lesson calls for a final array of all the book titles contained in the array "users".

```const users = [
{
name: 'Samir',
age: 27,
favoriteBooks:[
{title: 'The Brothers Karamazov'}
]
},
{
name: 'Angela',
age: 33,
favoriteBooks:[
{title: 'Tenth of December'},
{title: 'Cloud Atlas'},
{title: 'One Hundred Years of Solitude'}
]
},
{
name: 'Beatrice',
age: 42,
favoriteBooks:[
{title: 'Candide'}
]
}
];
```

The result should be:

```['The Iliad', 'The Brothers Karamazov', 'Tenth of December', 'Cloud Atlas', 'One Hundred Years of Solitude', 'Candide'];
```

The solution covered in the lesson uses the map method twice (the second map method is used inside the first map method) and then reduces the book arrays into one array with all the book titles.

```const books = users
.map(user => user.favoriteBooks.map(book => book.title))
.reduce((arr, titles) => [...arr, ...titles], []);

console.log(books);
```

Wouldn't it be more effective if we first use the reduce method on the array, and then chain the map method afterwards?

By reducing first, the map method only needs to be used once.

```const books = users
.reduce((arr, users) => [...arr, ...user.favoriteBooks], [])
.map(book => book.title);

console.log(books);
```

```const books = users.reduce((arr, user) => [...arr, ...user.favoriteBooks.map(book => book.title)], []);