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

Carlos Lantigua
Carlos Lantigua
5,938 Points

Trying to print out array of objects I get [object Objects]

So I seem to have terrible luck and spend more time fixing code then writing it haha. I'm following along with the video after making my own to see how he did it differently and i keep having this issue even though I've checked it over and over. When trying to print to the DOM all I get is [object Object]. Im going to print my code as is along with the src links for the js.

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Students</title> <link rel="stylesheet" href="css/styles.css"> </head> <body> <h1>Students</h1> <div id="output">

</div> <script src="js/students.js"></script> <script src="js/student_report.js"></script> </body> </html>

//student.js Array of Objects information var students = [ { name: 'Dave', track: 'Front End Development', achievements: 158, points: 14730}, { name: 'Jody', track: 'iOS Development with Swift', achievements: '175', points: '16375' }, { name: 'Jordan', track: 'PHP Development', achievements: '55', points: '2025' }, { name: 'John', track: 'Learn WordPress', achievements: '40', points: '1950' }, { name: 'Trish', track: 'Rails Development', achievements: '5', points: '350' } ];

//student_report.js prints out the list from inside the student array var message = ''; var student;

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

for (var i = 0; i < students.length; i += 1) { student = students[i]; message += '<h2>Student: ' + student.name + '</h2>'; }

print(student);

Carlos Lantigua
Carlos Lantigua
5,938 Points

ugghh, I didn't know it was going to come out so ugly.. here's the snapshot https://w.trhou.se/hna5jmuwja

sorry.

1 Answer

Antonio De Rose
Antonio De Rose
20,884 Points
var students = [ 
  { 
   name: 'Dave',
    track: 'Front End Development',
    achievements: 158,
    points: 14730
  },
  {
    name: 'Jody',
    track: 'iOS Development with Swift',
    achievements: '175',
    points: '16375'
  },
  {
    name: 'Jordan',
    track: 'PHP Development',
    achievements: '55',
    points: '2025'
  },
  {
    name: 'John',
    track: 'Learn WordPress',
    achievements: '40',
    points: '1950'
  },
  {
    name: 'Trish',
    track: 'Rails Development',
    achievements: '5',
    points: '350'
  }
];

  var message = '';
  var student;

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

  for (var i = 0; i < students.length; i += 1) {
      student = students[i];
      message += '<h2>Student: ' + student.name + '</h2>';
  }

  print(student); //you are obviously printing an object, cause student is an object
//every time it runs through the loop, it would add one single object
//containing name, track, achievements, points per student 
//which is an object, code is doing right as expected
//should you be wanting to print(message)