const getLeaderBoard = (students) => {
// do you magic
const leaderboard = students.map(student => {
const totalGrade = Object.values(student.grades).reduce((sum, grade) => sum + grade, 0);
return {...student, totalGrade};
});
leaderboard.sort((a,b) => b.totalGrade - a.totalGrade);
return leaderboard;
}
const students = [
{
name: '3bkreem',
class: '3rd',
grades: {
math: 25,
physics: 25,
programming: 25,
english: 25
}
},
{
name: 'Samer',
class: '3rd',
grades: {
math: 10,
physics: 15,
programming: 12,
english: 19
}
},
{
name: 'Ahmed',
class: '3rd',
grades: {
math: 20,
physics: 20,
programming: 20,
english: 20
}
},
{
name: 'Ali',
class: '3rd',
grades: {
math: 20,
physics: 25,
programming: 19,
english: 22
}
},
{
name: 'Elgoker',
class: '3rd',
grades: {
math: 23,
physics: 25,
programming: 19,
english: 22
}
}
]
console.log(getLeaderBoard(students));
Y29uc3QgZ2V0TGVhZGVyQm9hcmQgPSAoc3R1ZGVudHMpID0+IHsKICAvLyBkbyB5b3UgbWFnaWMKICBjb25zdCBsZWFkZXJib2FyZCA9IHN0dWRlbnRzLm1hcChzdHVkZW50ID0+IHsKICAgIGNvbnN0IHRvdGFsR3JhZGUgPSBPYmplY3QudmFsdWVzKHN0dWRlbnQuZ3JhZGVzKS5yZWR1Y2UoKHN1bSwgZ3JhZGUpID0+IHN1bSArIGdyYWRlLCAwKTsKICAgIHJldHVybiB7Li4uc3R1ZGVudCwgdG90YWxHcmFkZX07CiAgfSk7CgogIGxlYWRlcmJvYXJkLnNvcnQoKGEsYikgPT4gYi50b3RhbEdyYWRlIC0gYS50b3RhbEdyYWRlKTsKICByZXR1cm4gbGVhZGVyYm9hcmQ7Cn0KCmNvbnN0IHN0dWRlbnRzID0gWwogIHsKICAgIG5hbWU6ICczYmtyZWVtJywKICAgIGNsYXNzOiAnM3JkJywKICAgIGdyYWRlczogewogICAgICBtYXRoOiAyNSwKICAgICAgcGh5c2ljczogMjUsCiAgICAgIHByb2dyYW1taW5nOiAyNSwKICAgICAgZW5nbGlzaDogMjUKICAgIH0KICB9LAoKICB7CiAgICBuYW1lOiAnU2FtZXInLAogICAgY2xhc3M6ICczcmQnLAogICAgZ3JhZGVzOiB7CiAgICAgIG1hdGg6IDEwLAogICAgICBwaHlzaWNzOiAxNSwKICAgICAgcHJvZ3JhbW1pbmc6IDEyLAogICAgICBlbmdsaXNoOiAxOQogICAgfQogIH0sCgogIHsKICAgIG5hbWU6ICdBaG1lZCcsCiAgICBjbGFzczogJzNyZCcsCiAgICBncmFkZXM6IHsKICAgICAgbWF0aDogMjAsCiAgICAgIHBoeXNpY3M6IDIwLAogICAgICBwcm9ncmFtbWluZzogMjAsCiAgICAgIGVuZ2xpc2g6IDIwCiAgICB9CiAgfSwKCiAgewogICAgbmFtZTogJ0FsaScsCiAgICBjbGFzczogJzNyZCcsCiAgICBncmFkZXM6IHsKICAgICAgbWF0aDogMjAsCiAgICAgIHBoeXNpY3M6IDI1LAogICAgICBwcm9ncmFtbWluZzogMTksCiAgICAgIGVuZ2xpc2g6IDIyCiAgICB9CiAgfSwKCiAgewogICAgbmFtZTogJ0VsZ29rZXInLAogICAgY2xhc3M6ICczcmQnLAogICAgZ3JhZGVzOiB7CiAgICAgIG1hdGg6IDIzLAogICAgICBwaHlzaWNzOiAyNSwKICAgICAgcHJvZ3JhbW1pbmc6IDE5LAogICAgICBlbmdsaXNoOiAyMgogICAgfQogIH0KXQoKY29uc29sZS5sb2coZ2V0TGVhZGVyQm9hcmQoc3R1ZGVudHMpKTs=