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.

JavaScript JavaScript Array Iteration Methods Combining Array Methods Combining filter() and map()

.map(name => ({ name: name}) ); In the arrow function body, how does it know which 'name' is the provided argument

What would code would be used to yield the Result : [{Samir: 'Samir'}, {Shaniqua: 'Shaniqua'}, {Sean:'Sean'}]; ?

Because I'm wondering how the code knows you are not trying to name the property the same as the argument.

5 Answers

Juan Luna Ramirez
Juan Luna Ramirez
8,985 Points

To get the results you want you can use computed property names https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#computed_property_names

So your map function would be name => ({ [name]: name }) to get the desired result.

Otherwise, the function from your original question is like doing name => ({ 'name': name }). The proof is that you can use another property key, like person, and it will still work because the program will not be looking for a variable called person; its just going to assign name to the person property of the object you are returning.

Hi Rick!

I'm not sure exactly what he was trying to do in the video, but this is what made sense to me:

const userNames = ['Samir', 'Angela', 'Beatrice', 'Shaniqua', 'Marvin', 'Sean'];

const users = userNames
    .filter(name => name[0] === 'S')
    .map(name => {
        return "name: " + name;
    });

console.log(users);

Which will log:

> (3) ["name: Samir", "name: Shaniqua", "name: Sean"]

I hope that helps.

Stay safe and happy coding!

Thanks, Peter

What I am seeking is the code that yields a different result than in the video-- code that yields a result of [{Samir: 'Samir'}, {Shaniqua: 'Shaniqua'}, {Sean:'Sean'}];

Because if I know the answer to this question, it may help me to understand more about the code he used in the video as well.

This is as close as I could get:

const userNames = ['Samir', 'Angela', 'Beatrice', 'Shaniqua', 'Marvin', 'Sean'];

const users = userNames
    .filter(name => name[0] === 'S')
    .map(name => {
         let jsonObj = JSON.parse('{"' + name + '": "' + name + '"}');
         return jsonObj;
    });

console.log(users);

JSON.parse turns the string into an actual JSON object.

I hope that helps.

Stay safe and happy coding!

Thanks guys for the responses.

I was thinking it might have something to do with square brackets. I've been so bogged down in another treehouse track that I haven't had to time to check into it.

This is a big help to me.