将等级作为对象值从最高到最低排序

Rank grades as object values from highest to lowest

我想从每个对象中获取名字和gwa,然后根据他们的gwa 从高到低排列它们。我得到了 "getting the first name and 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);

您可以试试下面的代码:

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);