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 trialkhay sing
6,806 PointsI don't understand how this works
var students = [ { Name: 'KhaySing', Track: 'Front End Developer', Achievements: 50, Points: 3605 }, { Name: 'Heng', Track: 'Back End Developer', Achievements: 100, Points: 4605 }, { Name: 'KhaySing', Track: 'IOS Developer', Achievements: 350, Points: 5605 }, { Name: 'Chet', Track: 'Web Designer', Achievements: 650, Points: 6505 }, { Name: 'Seyha', Track: 'Android Developer', Achievements: 550, Points: 8605 } ];
if(search.toUpperCase() === student.Name.toUpperCase()){
message = getreport(student);
message = getreport(student);
print(message);
}
} }
after i put one more " message = getreport(student); " it shows every 'KhaySing' data even it has more than two. how does this work because i define only 2 variable.
1 Answer
Steven Parker
231,275 PointsThis code is incomplete. The creation and assignment of "search" is missing, as is the definition of the function "getreport". And I suspect that the code responsible for your issue is inside "getreport", unless there is some additional loop code also not shown.
Also, you have a duplicated line:
message = getreport(student);
message = getreport(student);
The second line completely replaces the contents of "message", so the first line has no effect and can be removed.
khay sing
6,806 Pointskhay sing
6,806 Pointsvar students = [ { Name: 'KhaySing', Track: 'Front End Developer', Achievements: 50, Points: 3605 }, { Name: 'Heng', Track: 'Back End Developer', Achievements: 100, Points: 4605 }, { Name: 'KhaySing', Track: 'IOS Developer', Achievements: 350, Points: 5605 }, { Name: 'KhaySing', Track: 'Web Designer', Achievements: 650, Points: 6505 }, { Name: 'KhaySing', Track: 'Android Developer', Achievements: 550, Points: 8605 } ];
var message= '' ; var student; var search; function print(message){ document.write(message); }
function getreport (student){ var report= '<h2> Student: ' + student.Name + '</h2>'; report += '<p> Track: ' + student.Track + '</h2>'; report += '<p> Achievements: ' + student.Achievements + '</h2>'; report += '<p> Points: ' + student.Points + '</h2>'; return report; }
while (true) { search = prompt('Search students record: type a name [Dara] or type' + " 'quit' " + 'to exit the program.'); if (search === null ||search.toLowerCase() === 'quit'){ break; }
for (var i=0; i <students.length ; i+=1){ student = students[i]; if(search.toUpperCase() === student.Name.toUpperCase()){ message = getreport(student); message = getreport(student); print(message); } } }
this is full code . i mean i try to figure out how to display more than 2 object which has Name:"KhaySing" in array and if i delete message = getreport(student); it will show only 1 object then i added more one line it works but i dont understand why it's work.
Steven Parker
231,275 PointsSteven Parker
231,275 PointsI see exactly the same thing with one line or two:
I just enter "khaysing" for the first prompt, and "quit" for the second. Note that because of how browsers work, you won't see the output until you enter "quit".
Also, you have some unbalanced HTML tags on a few lines, for example:
report += "<p> Track: " + student.Track + "</h2>"; // <- the "/h2" should be "/p"