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.

Sum Tsui
Full Stack JavaScript Techdegree Student 29,117 PointsI tried to use the for in loop with a condition but..
var student;
var allProp;
function print(message) {
var idOutput = document.getElementById('output');
idOutput.innerHTML = message;
}
for (i = 0; i < students.length; i += 1) {
student = students[i];
for (var prop in student) {
if (prop === 'name') {
allProp += '<h2>' + 'Student: ' + student.name + '</h2>';
} else {
allProp += '<p>' + prop + ': ' + student[prop] + '</p>';
}
}
}
print(allProp);
but the output to the page is a bit strange
it has an "undefined" before the first student like this:
undefined
Student: Dave
track: Front End Development
achievements: 158
points: 14730
2 Answers

Samuel Webb
25,369 PointsWhen you originally set allProp, you're setting it without a value which in turn makes it undefined. When you += a string to an undefined variable type, it seems to convert undefined to a string before concatenating them together. If you make allProp an empty string at the beginning, you shouldn't get the problem anymore.
var student;
var allProp = '';

Sum Tsui
Full Stack JavaScript Techdegree Student 29,117 Pointsoh,, that is why, thank you

Samuel Webb
25,369 PointsNo problem. Glad to help.

Ryan Burke
1,419 PointsI took the same approach as Sum. I did not even consider the solution in the video as I was putting this together.
Is there a reason why we should not have done it like this? This seems like more fluid logic to me - as you loop through the objects in the array, loop through the keys in the objects, and execute as directed.
Samuel Webb
25,369 PointsSamuel Webb
25,369 PointsHey Sum,
I edited your question to the proper markdown syntax for showing code. Make sure you use 3 back ticks(```). That's the same button which has the tilda(~). You were originally using single quotes('''). For more information on formatting in markdown, click the Markdown Cheatsheet located at the bottom of the comment and answer boxes.