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 Student Record Search Challenge Solution

Tyler Durden
Tyler Durden
2,406 Points

Is there a way to use the for-in loop to get all the property names and values?

I understand using the while loop and if statement for check for when the prompt variables is equal to .name in the array.

but say there was like 100 properties of each object , and instead of building up the string and having to type that all out, is there a way to just use the FOR LOOP to scan through the array students[i].name, and then in the IF STATEMENT, if it is === to the name the user inputted via the prompt, can you not nest a FOR IN loop inside the for loop to then "spit out" or document.getElementByID('div name here').innerHTML all the property names and values of the Object? that way you don't have to type out 100 different properities in the HTML string ? (if you had an object with that much information I mean).

I tried to do this, but was getting "Object object" outputs , like it I couldn't access the real property values/string/int values.

Is the FOR IN loop only used for console.log then?

3 Answers

Steven Parker
Steven Parker
221,107 Points

It seems like this is done in one of the courses, but since I don't recall which here's a little function that will list out the contents of an object into a specified page element:

function showProperties(object, divID) {
  var html = "object properties:<ul>";
  for (property in object) {
    html += `<li>${property}: ${object[property]}</li>`;
  }
  html += "</ul>";
  document.getElementById(divID).innerHTML = html;
}
Tyler Durden
Tyler Durden
2,406 Points

and if you have multiple objects inside an array, you can first loop through the array then nest that for-in loop inside to get the properties of each object inside the array without having to explicitly use the object[property].name, etc... notation?

Steven Parker
Steven Parker
221,107 Points

Sure, but you'd probably want to modify the function so it adds to the page element instead of overwriting it.

Tyler Durden
Tyler Durden
2,406 Points

when I loop through that using the for-in loop, I get :

undefined0: [object Object]1: [object Object]2: [object Object]3: [object Object]4: [object Object]

as the output (document.getElementById('output').innerHTML method)for an Array I made containing 5 objects (each objects contains 4 properties).

I have not been able to get it to print/document.write the contents of the object via a loop to the page.

In the course video, he only showed the for-in looping through the objects with CONSOLE.LOG, he never actually printed the contents of the objects via a loop to the page.

Steven Parker
Steven Parker
221,107 Points

It doesn't look like you're calling "showProperties" for each object here. To completely analyze the issue, you'll need to show the whole code (all JS and HTML). Or better yet, make a snapshot of your workspace and post the link to it here.