Ранжируйте оценки как значения объекта от самого высокого до самого низкого


Я хочу получить первое имя и gwa от каждого объекта, а затем расположить их в соответствии с их gwa от самого высокого до самого низкого. Я получил" получение первого имени и gwa " часть, но я не знаю, как организовать их в соответствии с их gwa.

Я пытался использовать sort (), но, похоже, я использовал его неправильно. Кто-нибудь может мне помочь?

const students = [
{
    firstName: "Jose",
    lastName: "Valenci",
    gender: "male",
    gwa: 98, 
    interest: "tennis"
},

{
    firstName: "Debby",
    lastName: "Smith",
    gender: "female",
    gwa: 96,
    interest: "singing"
},

{
    firstName: "Zaira",
    lastName: "Pay",
    gender: "female",
    gwa: 93,
    interest: "crafts"
}];


const basedOnGwa = students.map ((name,grade) => {
let{lastName} = name;
let {gwa} = grade;
grade = grade.sort(grade1 => {
    let {gwa} = grade1;
    return grade1;
}); 

return grade();
})

console.log(basedOnGwa);
1 2

1 ответ:

Вы можете попробовать следующий код:

const students = [
{
    firstName: "Jose",
    lastName: "Valenci",
    gender: "male",
    gwa: 98, 
    interest: "tennis"
},

{
    firstName: "Debby",
    lastName: "Smith",
    gender: "female",
    gwa: 96,
    interest: "singing"
},

{
    firstName: "Zaira",
    lastName: "Pay",
    gender: "female",
    gwa: 93,
    interest: "crafts"
}];


var basedOnGwa = students.reduce((arr,v,i)=>{
   return arr.concat({'firstName':v.firstName,'gwa':v.gwa});
},[]);
basedOnGwa.sort((a,b)=>{
   return b.gwa - a.gwa;
})
console.log(basedOnGwa);

Править

Если вы хотите использовать map вместо reduce, Вы можете следовать следующему коду:

const students = [
{
    firstName: "Jose",
    lastName: "Valenci",
    gender: "male",
    gwa: 98, 
    interest: "tennis"
},

{
    firstName: "Debby",
    lastName: "Smith",
    gender: "female",
    gwa: 96,
    interest: "singing"
},

{
    firstName: "Zaira",
    lastName: "Pay",
    gender: "female",
    gwa: 93,
    interest: "crafts"
}];


var basedOnGwa = students.map((v,i)=>{
   return {'firstName':v.firstName,'gwa':v.gwa};
});
basedOnGwa.sort((a,b)=>{
   return b.gwa - a.gwa;
})
console.log(basedOnGwa);