const getLeaderBoard = (students) => {
const leaderboard = students.map((st) => ({
...st,
totalGrade: Object.values(st.grades).reduce((sum, grade) => sum + grade),
}));
return leaderboard
.filter((st) => st.totalGrade >= 85)
.sort((a, b) => b.totalGrade - a.totalGrade);
};
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));
console.log("#".repeat(50));
console.log(students);
Y29uc3QgZ2V0TGVhZGVyQm9hcmQgPSAoc3R1ZGVudHMpID0+IHsKICBjb25zdCBsZWFkZXJib2FyZCA9IHN0dWRlbnRzLm1hcCgoc3QpID0+ICh7CiAgICAuLi5zdCwKICAgIHRvdGFsR3JhZGU6IE9iamVjdC52YWx1ZXMoc3QuZ3JhZGVzKS5yZWR1Y2UoKHN1bSwgZ3JhZGUpID0+IHN1bSArIGdyYWRlKSwKICB9KSk7CgogIHJldHVybiBsZWFkZXJib2FyZAogICAgLmZpbHRlcigoc3QpID0+IHN0LnRvdGFsR3JhZGUgPj0gODUpCiAgICAuc29ydCgoYSwgYikgPT4gYi50b3RhbEdyYWRlIC0gYS50b3RhbEdyYWRlKTsKfTsKCmNvbnN0IHN0dWRlbnRzID0gWwogIHsKICAgIG5hbWU6ICIzYmtyZWVtIiwKICAgIGNsYXNzOiAiM3JkIiwKICAgIGdyYWRlczogewogICAgICBtYXRoOiAyNSwKICAgICAgcGh5c2ljczogMjUsCiAgICAgIHByb2dyYW1taW5nOiAyNSwKICAgICAgZW5nbGlzaDogMjUsCiAgICB9LAogIH0sCgogIHsKICAgIG5hbWU6ICJTYW1lciIsCiAgICBjbGFzczogIjNyZCIsCiAgICBncmFkZXM6IHsKICAgICAgbWF0aDogMTAsCiAgICAgIHBoeXNpY3M6IDE1LAogICAgICBwcm9ncmFtbWluZzogMTIsCiAgICAgIGVuZ2xpc2g6IDE5LAogICAgfSwKICB9LAoKICB7CiAgICBuYW1lOiAiQWhtZWQiLAogICAgY2xhc3M6ICIzcmQiLAogICAgZ3JhZGVzOiB7CiAgICAgIG1hdGg6IDIwLAogICAgICBwaHlzaWNzOiAyMCwKICAgICAgcHJvZ3JhbW1pbmc6IDIwLAogICAgICBlbmdsaXNoOiAyMCwKICAgIH0sCiAgfSwKCiAgewogICAgbmFtZTogIkFsaSIsCiAgICBjbGFzczogIjNyZCIsCiAgICBncmFkZXM6IHsKICAgICAgbWF0aDogMjAsCiAgICAgIHBoeXNpY3M6IDI1LAogICAgICBwcm9ncmFtbWluZzogMTksCiAgICAgIGVuZ2xpc2g6IDIyLAogICAgfSwKICB9LAoKICB7CiAgICBuYW1lOiAiRWxnb2tlciIsCiAgICBjbGFzczogIjNyZCIsCiAgICBncmFkZXM6IHsKICAgICAgbWF0aDogMjMsCiAgICAgIHBoeXNpY3M6IDI1LAogICAgICBwcm9ncmFtbWluZzogMTksCiAgICAgIGVuZ2xpc2g6IDIyLAogICAgfSwKICB9LApdOwoKY29uc29sZS5sb2coZ2V0TGVhZGVyQm9hcmQoc3R1ZGVudHMpKTsKY29uc29sZS5sb2coIiMiLnJlcGVhdCg1MCkpOwpjb25zb2xlLmxvZyhzdHVkZW50cyk7Cg==
[ { name: '3bkreem',
class: '3rd',
grades: { math: 25, physics: 25, programming: 25, english: 25 },
totalGrade: 100 },
{ name: 'Elgoker',
class: '3rd',
grades: { math: 23, physics: 25, programming: 19, english: 22 },
totalGrade: 89 },
{ name: 'Ali',
class: '3rd',
grades: { math: 20, physics: 25, programming: 19, english: 22 },
totalGrade: 86 } ]
##################################################
[ { 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 } } ]