JavaScript JavaScript Loops, Arrays and Objects Tracking Data Using Objects The Build an Object Challenge, Part 2 Solution

Can somebody give me a shorter cleaner version of my code?

var students = [ 
  { 
   name: 'Dave',
    track: 'Front End Development',
    achievements: 158,
    points: 14730
  },
  {
    name: 'Jody',
    track: 'iOS Development with Swift',
    achievements: '175',
    points: '16375'
  },
  {
    name: 'Jordan',
    track: 'PHP Development',
    achievements: '55',
    points: '2025'
  },
  {
    name: 'John',
    track: 'Learn WordPress',
    achievements: '40',
    points: '1950'
  },
  {
    name: 'Trish',
    track: 'Rails Development',
    achievements: '5',
    points: '350'
  }
];


for (var prop in students ) {
  var name = students[prop].name;
  var track = students[prop].track;
  var achievements = students[prop].achievements;
  var points = students[prop].points;
  var printOut = ""; 
  printOut += "<h1>" +name+"</h1>";
  printOut += "<p>" +track+ "</p>";
  printOut += "<p>" +achievements+ "</p>";
  printOut += "<p>" +points+ "</p>";
  print(printOut);
}

function print(message) {
  document.write(message);
};

Thanks!

2 Answers

Steven Parker
Steven Parker
203,729 Points

This looks pretty "clean" as it is. :+1: But you might want to display the attribute names along with their values.

And you could make it a bit more compact by not creating variables that are used only once, and iterating on the student objects directly:

for (var stud of students ) {
  var printOut = "<h1>" + stud.name + "</h1>";
  printOut += "<p>Track: " + stud.track + "</p>";
  printOut += "<p>Achievements: " + stud.achievements + "</p>";
  printOut += "<p>Points: " + stud.points + "</p>";
  print(printOut);
}

thank you! that's looks more sexy!