JavaScript 排序多个数组

JavaScript sort multiple array

假设我有这个数据

Name Mark
John 76
Jack 55
Dani 90

和成绩

Marks Grade
100-80 A
79 - 60 B
59 - 40 C

假设我将脚本声明为

 let data = [
  [John, 76],
  [Jack, 55],
  [Dani, 90]
];

程序应该给成绩分配相应的分数,我知道我们不能像往常一样更改分数的索引,因为每个分数分配给不同的学生,我该如何对成绩进行排序?输出应以 降序 显示所有数据,如

Name Mark Grade
Dani 90 A
John 76 B
Jack 55 C

如果您的意思是您希望输出如下:

Dani - A
John - B
Jack - C

然后我会做类似的事情:

一个方法:

getGrade(points => {
  if(points >= 80 && points <= 100) return 'A'
  if(points >= 60 && points < 80) return 'B'
  return 'C'
})

则数据为:

    const data = [
                 {name: 'John', value: 76},
                 {name: 'Jack', value: 55},
                 {name: 'Dani', value: 90},
                 ]

然后就这样做:

data.sort((student1, student2) => {
 if(getGrade(student1.value) === student2.value) return 0
 return (getGrade(student1.value) > getGrade(student2.value))? 1 : -1
})

希望我理解正确?

我会将其分解为不同的功能,以便您可以分别处理每个任务。然后你可以将它们组合起来产生你想要的结果,像这样:

const grades = [
  ['A', 80],
  ['B', 60],
  ['C', 40],
];

function getGrade (mark) {
  for (const [grade, minMark] of grades) {
    if (mark < minMark) continue;
    return grade;
  }
  return 'F'; // use minimum grade as default if mark is too low
}

function mapToObject ([name, mark]) {
  return {grade: getGrade(mark), name, mark};
}

function sortByHighestMark (a, b) {
  return b.mark - a.mark;
}

const data = [
  ['John', 76],
  ['Jack', 55],
  ['Dani', 90]
];

const result = data.map(mapToObject).sort(sortByHighestMark);
console.log(result);

// and data is unmodified:
console.log(data);