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

Stefan Cutajar
Stefan Cutajar
7,747 Points

Creating a two dimensional array using .push method (or best way to do it).

Hi guys, I'm currently working on the last challenge of objects and I'm trying to add an array in an array so then I can loop through it to print the data however I can't find out how to do this. Im aware that I have some commented out code and unused variables because I've been experimenting for a while on this challenge trying to figure it out. Here you can find my work space ->> http://w.trhou.se/nwr3k26vgd Thanks, Stefan

brendon hanson
brendon hanson
6,191 Points

It should work fine. All you have to do is add a few more "report += <li>blah blah</li>". I can finish the rest it would only take 5min.

4 Answers

Steven Parker
Steven Parker
210,487 Points

In case you were wondering what the issue was in the original code, on line 20 of "student_report.js" the same loop variable "i" that is used to index the "students" array is being used to index into the "response" array. This means that a student can only be found if the search terms are entered in the same order as the students are stored ("Dave" first, "Jody" second, etc).

brendon hanson
brendon hanson
6,191 Points

I did this a few months ago and had issues too. Here's how I would do it. I didn't finish everything so you could get some practice with it but I hope this helps! Make sure to mark best answer if you think I helped.

var student;
question = prompt('Please type the student name you wish to search for or type quit to exit');
function print(message) {
  var outputDiv = document.getElementById('output');
  outputDiv.innerHTML = message;
}
function getStudent(student) {
let report = `<h1>NAME: ${student.name}</h1>`;
  `<ol class="list">`
  report += `<li>Membership: ${student.track}</li>`;
  `</ol>`
  return report;
}
for ( i = 0; i < students.length; i ++){
  student = students[i];
  if (question === student.name){
  message = getStudent(students[i]);
  print(message);
} else if( question === "quit" ){
}  
}

If you want me to explain why this works just ask :)

Stefan Cutajar
Stefan Cutajar
7,747 Points

Thanks for your reply however I would prefer if I could get my code to work so I can learn from it.

brendon hanson
brendon hanson
6,191 Points

Here is the finished code. I don't know if this was your desired functionality but I am pretty sure this is. If the prompt doesn't show up just refresh the page(I'm sure you already knew that) Just replace your old code with this and it should be good!

var student;
question = prompt('Please type the student name you wish to search for or type quit to exit');
function print(message) {
  var outputDiv = document.getElementById('output');
  outputDiv.innerHTML = message;
}
function getStudent(student) {
let report = `<h1>NAME: ${student.name}</h1>`;
  `<ol class="list">`
  report += `<li>Track: ${student.track}</li>`;
  report += `<li>Achievments: ${student.achievements}</li>`;
  report += `<li>Points: ${student.points}</li>`;
  `</ol>`
  return report;
}
for ( i = 0; i < students.length; i ++){
  student = students[i];
  if (question === student.name){
  message = getStudent(students[i]);
  print(message);
} else if( question === "quit" ){
}  
}

Again if you want me to explain how it works just ask. There are other ways to do this as well but this is the easiest way to me

Stefan Cutajar
Stefan Cutajar
7,747 Points

Thanks you for your help guys :)