Javascript 使用map/filter/reduce根据百分比对用户进行排名

Javascript 使用map/filter/reduce根据百分比对用户进行排名,javascript,Javascript,我想根据用户的分数百分比显示用户的所有详细信息,并为他们分配等级。我在这里得到了所有的细节。如何排序和打印用户喜欢的内容 Tom has scored marks in Science - 80 Maths - 89 English - 91 and secured 86.67 % and his rank is 1. 类似地,students对象中的每个用户都是 var students = [{ name: "John", age: 20, id: 1, marks:

我想根据用户的分数百分比显示用户的所有详细信息,并为他们分配等级。我在这里得到了所有的细节。如何排序和打印用户喜欢的内容

Tom has scored marks in Science - 80 Maths - 89 English - 91 and secured 86.67 % and his rank is 1.  
类似地,students对象中的每个用户都是

var students = [{
  name: "John",
  age: 20,
  id: 1,
  marks: {
    science: 80,
    maths: 90,
    english: 67
  }
}, {
  name: "Jack",
  age: 22,
  id: 3,
  marks: {
    science: 56,
    maths: 91,
    english: 81
  }
}, {
  name: "Robert",
  age: 23,
  id: 2,
  marks: {
    science: 75,
    maths: 79,
    english: 87
  }
}, {
  name: "Tom",
  age: 20,
  id: 4,
  marks: {
    science: 80,
    maths: 89,
    english: 91
  }
}];


var inDetail = getPercentageAndRank(students);

function getPercentageAndRank(students) {

  var details = students.map(function(getMarks) {
    console.log(((getMarks.marks.english + getMarks.marks.maths + getMarks.marks.science) / 3));
    return {
      name: getMarks.name,
      science: getMarks.marks.science,
      maths: getMarks.marks.maths,
      english: getMarks.marks.english,
      percentage: ((getMarks.marks.english + getMarks.marks.maths + getMarks.marks.science) / 3)
    };
  })

  return details.map(function(gg) {
    return [
      gg.name,
      "has scored marks in Science -",
      gg.science,
      "Maths -",
      gg.maths,
      "English -",
      gg.english,
      "and secured", (gg.percentage).toFixed(2),
      "%."
    ].join(' ');

  });
}
输出:

["John has scored marks in Science - 80 Maths - 90 English - 67 and secured 79.00 %.",
    "Jack has scored marks in Science - 56 Maths - 91 English - 81 and secured 76.00 %.",
    "Robert has scored marks in Science - 75 Maths - 79 English - 87 and secured 80.33 %.",
    "Tom has scored marks in Science - 80 Maths - 89 English - 91 and secured 86.67 %."]
这里我得到的输出不是根据上面所说的。如何获取上述内容。

您需要添加:

.sort(function(a, b) {
    return b.percentage - a.percentage;
  });
检查此解决方案

var学生=[{
姓名:“约翰”,
年龄:20,,
id:1,
标记:{
科学:80,
数学:90,
中文:67
}
}, {
姓名:“杰克”,
年龄:22,,
id:3,
标记:{
科学:56,
数学:91,
中文:81
}
}, {
姓名:“罗伯特”,
年龄:23,,
id:2,
标记:{
科学:75,
数学:79,
中文:87
}
}, {
姓名:“汤姆”,
年龄:20,,
id:4,
标记:{
科学:80,
数学:89,
中文:91
}
}];
var inDetail=getPercentageAndRank(学生);
函数getPercentageAndRank(学生){
var details=students.map(函数(getMarks){
//log((getMarks.marks.english+getMarks.marks.math+getMarks.marks.science)/3);
返回{
名称:getMarks.name,
科学:getMarks.marks.science,
数学:获得分数。分数。数学,
英语:getMarks.marks.english,
百分比:((getMarks.marks.english+getMarks.marks.math+getMarks.marks.science)/3),
排名:0
};
}).排序(功能(a、b){
返回b.百分比-a.百分比;
});
对于(变量i=0;iconsole.log(inDetail)