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 Nested Data and Additional Exploration

Amandeep Pasricha
Amandeep Pasricha
14,932 Points

Did we need to specify the default value of the accumulator to be equal to "[]"?

For example, we write [...arr...curr],[]---> the initial value of the accumulator is [], but wouldn't it be okay to omit the initial value so that by default, the initial value is one the inner rays? Wouldn't that be fine?

Because at the end of the day you just want one array all values separated by commas.

1 Answer

Steven Parker
Steven Parker
217,494 Points

If you don't supply an initial value, the operation will start with the first element in the accumulator, so the accumulator would not be an array.

Will Albertsen
Will Albertsen
13,155 Points

So how come the code still works normally even if an empty array is not set as the initial value? Since the first value of the accumulator would be the string 'The Day the Earth Stood Still', would calling the spread operator on it not get you the following result?

["T", "h", "e", " ", "D", "a", "y", " ", "t", "h", "e", " ", "E", "a", "r", "t", "h", " ", "S", "t", "o", "o", "d", " ", "S", "t", "i", "l", "l"]
Steven Parker
Steven Parker
217,494 Points

Separating the strings into individual characters is not the objective of the exercise.

Tyler McDonald
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Tyler McDonald
Full Stack JavaScript Techdegree Graduate 16,676 Points

Hello from 2022! I am wondering the same thing. I ran the code both ways, and they both return an array of the string values, with or without the initial value. Am I missing something?

With initial value:

const flatMovies = movies.reduce((arr, innerMovies) => [...arr, ...innerMovies], []);

vs.

Without initial value:

const flatMovies = movies.reduce((arr, innerMovies) => [...arr, ...innerMovies]);

Both return an array

[
  'The Day the Earth Stood Still',
  'Superman',
  'Ghostbusters',
  'Finding Dory',
  'Jaws',
  'On the Waterfront'
]
Steven Parker
Steven Parker
217,494 Points

You're right, since the individual elements are arrays. I'm wondering if the example was different in 2019, since leaving off the initial value also doesn't produce the result shown by Will Albertsen now, either.