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 Loops, Arrays and Objects Tracking Data Using Objects The Build an Object Challenge, Part 2

Erik L
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Erik L
Full Stack JavaScript Techdegree Graduate 19,469 Points

when my code runs, I see undefined, can someone help?

function print (message) {
  var outputDiv = document.getElementById('output');
  outputDiv.innerHTML += message;
}

var HTML = '';

var students = [
  {
    name: 'Erik',
    track: 'Full Stack Javascript',
    achievements: 100,
    points: 3000
  },
  {
    name: 'Jackie',
    track: 'Python',
    achievements: '50',
    points: '300'
  },
  {
    name: 'Josh',
    track: 'CSS',
    achievements: '400',
    points: '2000'
  },
  {
    name: 'Alicia',
    track: 'PHP',
    achievements: '5000',
    points: '3000'
  },
  {
    name: 'Betty',
    track: 'Java',
    achievements: '5000',
    points: '4000'
  }
];

for (var i = 0; i < students.length; i++) {
  HTML += '<br>'
  HTML += '<b>Student: ' + students[i].Name + '</b><br>';
  HTML += 'Track: ' + students[i].Track + '<br>';
  HTML += 'Achievements: ' + students[i].Achievements + '<br>';
  HTML += 'Points: ' + students[i].Points + '<br>';
}

print(HTML);

4 Answers

First off you have an inconsistency with no quotes around the values for achievements and points here:

   name: 'Erik',
    track: 'Full Stack Javascript',
    achievements: 100,
    points: 3000

but the reason you see undefined is JavaScript is case sensitive. name, track, achievements and points have all been capitalized here:

 HTML += '<br>'
  HTML += '<b>Student: ' + students[i].Name + '</b><br>';
  HTML += 'Track: ' + students[i].Track + '<br>';
  HTML += 'Achievements: ' + students[i].Achievements + '<br>';
  HTML += 'Points: ' + students[i].Points + '<br>';

Switch those to lowercase and you should be good.

Erik L
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Erik L
Full Stack JavaScript Techdegree Graduate 19,469 Points

I was actually wondering if the numbers were supposed to have quotes or not, I followed the video exactly, that is why some numbers haves quotes and some don't

Kristaps, you need a return statement. From MDN:

Every function in JavaScript is a Function object. ... A function without a return statement will return a default value. In the case of a constructor called with the new keyword, the default value is the value of its this parameter. For all other functions, the default return value is undefined

Kristaps Vecvagars
Kristaps Vecvagars
6,192 Points

I see. However, in this case, when the function as tasked to simply push object into an array, what would the return be? Is it considered bad practice not to return anything?

Maybe I misspoke. You don't NEED a return statement. Without one the returned value is undefined.

Functions without return statements are fine. You would just call it without assigning it to anything. If you did assign the result, it would always return the default undefined. Here are stack overflow answers

Where you will find:

If you're returning undefined, specifically, you can just write return;

Kristaps Vecvagars
Kristaps Vecvagars
6,192 Points

Thank you very much for the explanation!

Kristaps Vecvagars
Kristaps Vecvagars
6,192 Points

I am also puzzled about the return of "undefined". I wrote a function that creates objects and pushes them into a predefined, empty array. The function works just fine, however, each time I run it, "undefined" is also returned to the console.

Any hints as to why that is? What am I missing?

function insertStudent(name, track, achievements, points) {
  let test_object = {};
  test_object.name = name;
  test_object.track = track;
  test_object.achievements = achievements;
  test_object.points = points;

  test_array.push(test_object);

};