Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

JavaScript JavaScript Array Iteration Methods Combining Array Methods Array Flattening

Liam Hayes
seal-mask
.a{fill-rule:evenodd;}techdegree
Liam Hayes
Full Stack JavaScript Techdegree Student 13,116 Points

Array Flattening Code Challenge

Not sure whatsoever how to solve this, would love some help or hints. Thank you very much :)

Challenge Task 1 of 1
Using reduce method, flatten the customerNames array of arrays. In other words, take all the names from each array inside customerNames and place them in one big array. Store the flattened array in the flattenedCustomerNames variable. You can use the array in the comments below for reference.
app.js
const customerNames = [
    [ "John", "Sandy", "Tyrone", "Elizabeth", "Penny" ],
    [ "Barry", "Wanda", "Jamal", "Hayden" ],
    [ "Portia", "Pam", "Philip" ]
];
let flattenedCustomerNames;

// flattenedCustomerNames should be: ["John", "Sandy", "Tyrone", "Elizabeth", "Penny", "Barry", "Wanda", "Jamal", "Hayden", "Portia", "Pam", "Philip"]
// Write your code below

2 Answers

Evaldas Burlingis
Evaldas Burlingis
7,020 Points

One of the simplier ways to solve this would be make empty array of flattenedCustomerNames and then with for loop to fill it with customerNames array.

ANSWER BELOW

const customerNames = [
    [ "John", "Sandy", "Tyrone", "Elizabeth", "Penny" ],
    [ "Barry", "Wanda", "Jamal", "Hayden" ],
    [ "Portia", "Pam", "Philip" ]
];

let flattenedCustomerNames;

// flattenedCustomerNames should be: ["John", "Sandy", "Tyrone", "Elizabeth", "Penny", "Barry", "Wanda", "Jamal", "Hayden", "Portia", "Pam", "Philip"]
// Write your code below

flattenedCustomerNames = [];

for(let i = 0; i < customerNames.length; i++){
  flattenedCustomerNames =  flattenedCustomerNames.concat(customerNames[i]);
}
console.log(flattenedCustomerNames);

ANSWER TO PASS YOUR CHALLENGE

flattenedCustomerNames = customerNames.reduce((acc, cu) => acc.concat(cu), []);

Very well written article about reduce and when to use it: https://medium.freecodecamp.org/reduce-f47a7da511a9

To read more about reduce method : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

flattenedCustomerNames = customerNames.reduce ((innerNames, names ) => innerNames.concat(names), [] );