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

Assigning Object to Array elements

What is wrong with the following Code

var students = [];
var studentRec= {};
var names = ['name1','name2','name3','name4','name5'];
var tracks = ['Frontend Development','iOS','Web Design','Core Java','Groovy Grails'];

// Populate students array 
for ( var i=0 ; i<=4 ; i+=1) {
  studentRec.name = names[i];
  studentRec.track = tracks[i];
  studentRec.achievements = i;
  studentRec.points = i;
  students[i] = Object.create(studentRec);
}

// Display students array 
for ( var i =0; i < students.length; i+=1) {
 document.write ('{');
    for ( var key in students[i]) {
      document.write (key , ':', students[i][key] , ',');
    }
document.write ('} <br>');
}

The output is :

Students

{name:name5,track:Groovy Grails,achievements:4,points:4,} 
{name:name5,track:Groovy Grails,achievements:4,points:4,} 
{name:name5,track:Groovy Grails,achievements:4,points:4,} 
{name:name5,track:Groovy Grails,achievements:4,points:4,} 
{name:name5,track:Groovy Grails,achievements:4,points:4,}

1 Answer

It's because every time your first "for" loop runs, all it's doing is reassigning the last value for i to all of those keys, until it ends on 4. Try deleting your second "for" loop & including the code you use to print out the values in that loop in your first loop. Hope that helps.