表后列表显示谁是排名第一的持有者



我有一个JSON数据表。但在那之后,我想向它展示谁是排名第一的人。我试了很多次,但都没成功。PFB。。

var studentsList = [
{ "id": "1", "firstName": "rajesh", "lastName": "kumar", "sub1": "35", "sub2": "55", "sub3": "45" },
{ "id": "2", "firstName": "ranjith", "lastName": "rajesh", "sub1": "56", "sub2": "65", "sub3": "44" },
{ "id": "3", "firstName": "arun", "lastName": "LK", "sub1": "48", "sub2": "89", "sub3": "88" },
{ "id": "4", "firstName": "abinaya", "lastName": "Vishwa", "sub1": "65", "sub2": "67", "sub3": "65" },
{ "id": "5", "firstName": "ashok", "lastName": "kumar", "sub1": "33", "sub2": "44", "sub3": "100" },
{ "id": "6", "firstName": "ashwini", "lastName": "kumar", "sub1": "89", "sub2": "35", "sub3": "100" },
{ "id": "7", "firstName": "karthick", "lastName": "kanagaraj", "sub1": "90", "sub2": "89", "sub3": "63" },
{ "id": "8", "firstName": "saravanan", "lastName": "fransis", "sub1": "84", "sub2": "81", "sub3": "83" },
{ "id": "9", "firstName": "Antoty", "lastName": "john", "sub1": "55", "sub2": "100", "sub3": "65" },
{ "id": "10", "firstName": "santhosh", "lastName": "Arun", "sub1": "33", "sub2": "100", "sub3": "83" }
];

只需遍历数组并跟踪当前最大值。

const studentsList = [
	{ "id": "1", "firstName": "rajesh", "lastName": "kumar", "sub1": "35", "sub2": "55", "sub3": "45" },
	{ "id": "2", "firstName": "ranjith", "lastName": "rajesh", "sub1": "56", "sub2": "65", "sub3": "44" },
	{ "id": "3", "firstName": "arun", "lastName": "LK", "sub1": "48", "sub2": "89", "sub3": "88" },
	{ "id": "4", "firstName": "abinaya", "lastName": "Vishwa", "sub1": "65", "sub2": "67", "sub3": "65" },
	{ "id": "5", "firstName": "ashok", "lastName": "kumar", "sub1": "33", "sub2": "44", "sub3": "100" },
	{ "id": "6", "firstName": "ashwini", "lastName": "kumar", "sub1": "89", "sub2": "35", "sub3": "100" },
	{ "id": "7", "firstName": "karthick", "lastName": "kanagaraj", "sub1": "90", "sub2": "89", "sub3": "63" },
	{ "id": "8", "firstName": "saravanan", "lastName": "fransis", "sub1": "84", "sub2": "81", "sub3": "83" },
	{ "id": "9", "firstName": "Antoty", "lastName": "john", "sub1": "55", "sub2": "100", "sub3": "65" },
	{ "id": "10", "firstName": "santhosh", "lastName": "Arun", "sub1": "33", "sub2": "100", "sub3": "83" }
];
let highestMarks = 0, 
highestMarksIndex = 0;

studentsList.reduce((acc, curr, index) => {
	const totalMarks = curr.sub1 + curr.sub2 + curr.sub3;
	
	if (totalMarks > highestMarks) {
		highestMarks = totalMarks;
		highestMarksIndex = index;
	}
	return acc;
}, {});
console.log('Highest marks student', studentsList[highestMarksIndex]);

您可以使用数组缩减器来获得排名总和最佳的项目:

var studentsList = [
{ "id": "1", "firstName": "rajesh", "lastName": "kumar", "sub1": "35", "sub2": "55", "sub3": "45" },
{ "id": "2", "firstName": "ranjith", "lastName": "rajesh", "sub1": "56", "sub2": "65", "sub3": "44" },
{ "id": "3", "firstName": "arun", "lastName": "LK", "sub1": "48", "sub2": "89", "sub3": "88" },
{ "id": "4", "firstName": "abinaya", "lastName": "Vishwa", "sub1": "65", "sub2": "67", "sub3": "65" },
{ "id": "5", "firstName": "ashok", "lastName": "kumar", "sub1": "33", "sub2": "44", "sub3": "100" },
{ "id": "6", "firstName": "ashwini", "lastName": "kumar", "sub1": "89", "sub2": "35", "sub3": "100" },
{ "id": "7", "firstName": "karthick", "lastName": "kanagaraj", "sub1": "90", "sub2": "89", "sub3": "63" },
{ "id": "8", "firstName": "saravanan", "lastName": "fransis", "sub1": "84", "sub2": "81", "sub3": "83" },
{ "id": "9", "firstName": "Antoty", "lastName": "john", "sub1": "55", "sub2": "100", "sub3": "65" },
{ "id": "10", "firstName": "santhosh", "lastName": "Arun", "sub1": "33", "sub2": "100", "sub3": "83" }
];
bestStudent = studentsList.reduce((acc, curr) => {
	if (curr.sub1 + curr.sub2 + curr.sub3 > acc.sub1 + acc.sub2 + acc.sub3){
		acc = curr
	}
	return acc
});
console.log(bestStudent)

因此,从问题来看,

要做的事情

  1. 需要将sub1、sub2、sub3这三个属性相加
  2. 根据三个属性的总值对数组进行排序

解释的解决方案

  1. 创建一个新数组(array.map(,而不是改变同一个数组
  2. 在新数组上,创建一个名为total的属性,该属性将对三个属性值求和,并通过动态更改类型将格式更改为数字
  3. 使用内置的排序功能,该功能将对数组的副本执行排序(array.sort(

let studentsList = [
{
"id": "1",
"firstName": "rajesh",
"lastName": "kumar",
"sub1": "35",
"sub2": "55",
"sub3": "45"
},
{
"id": "2",
"firstName": "ranjith",
"lastName": "rajesh",
"sub1": "56",
"sub2": "65",
"sub3": "44"
},
{
"id": "3",
"firstName": "arun",
"lastName": "LK",
"sub1": "48",
"sub2": "89",
"sub3": "88"
},
{
"id": "4",
"firstName": "abinaya",
"lastName": "Vishwa",
"sub1": "65",
"sub2": "67",
"sub3": "65"
},
{
"id": "5",
"firstName": "ashok",
"lastName": "kumar",
"sub1": "33",
"sub2": "44",
"sub3": "100"
},
{
"id": "6",
"firstName": "ashwini",
"lastName": "kumar",
"sub1": "89",
"sub2": "35",
"sub3": "100"
},
{
"id": "7",
"firstName": "karthick",
"lastName": "kanagaraj",
"sub1": "90",
"sub2": "89",
"sub3": "63"
},
{
"id": "8",
"firstName": "saravanan",
"lastName": "fransis",
"sub1": "84",
"sub2": "81",
"sub3": "83"
},
{
"id": "9",
"firstName": "Antoty",
"lastName": "john",
"sub1": "55",
"sub2": "100",
"sub3": "65"
},
{
"id": "10",
"firstName": "santhosh",
"lastName": "Arun",
"sub1": "33",
"sub2": "100",
"sub3": "83"
}
]
let sortedArrayBasedOnTotal = studentsList.map(o => ({...o, total: Number(o.sub1) + Number(o.sub2) + Number(o.sub3)})).sort((a,b) => b.total - a.total)
console.log(sortedArrayBasedOnTotal)

这个排序后的数组可以解析成一个表并显示在UI 上

您可以使用访问访问排名第一的持有者

console.log(sortedArrayBasedOnTotal[0])

  • 步骤1:计算所有学生所有科目的总分
  • 第二步:根据总分对学生进行排序
  • 第3步:根据需要获取排名

const studentsList = [
	{ "id": "1", "firstName": "rajesh", "lastName": "kumar", "sub1": "35", "sub2": "55", "sub3": "45" },
	{ "id": "2", "firstName": "ranjith", "lastName": "rajesh", "sub1": "56", "sub2": "65", "sub3": "44" },
	{ "id": "3", "firstName": "arun", "lastName": "LK", "sub1": "48", "sub2": "89", "sub3": "88" },
	{ "id": "4", "firstName": "abinaya", "lastName": "Vishwa", "sub1": "65", "sub2": "67", "sub3": "65" },
	{ "id": "5", "firstName": "ashok", "lastName": "kumar", "sub1": "33", "sub2": "44", "sub3": "100" },
	{ "id": "6", "firstName": "ashwini", "lastName": "kumar", "sub1": "89", "sub2": "35", "sub3": "100" },
	{ "id": "7", "firstName": "karthick", "lastName": "kanagaraj", "sub1": "90", "sub2": "89", "sub3": "63" },
	{ "id": "8", "firstName": "saravanan", "lastName": "fransis", "sub1": "84", "sub2": "81", "sub3": "83" },
	{ "id": "9", "firstName": "Antoty", "lastName": "john", "sub1": "55", "sub2": "100", "sub3": "65" },
	{ "id": "10", "firstName": "santhosh", "lastName": "Arun", "sub1": "33", "sub2": "100", "sub3": "83" }
];
// Added a new key 'total' for each student
// total = marks of subj1 + subj2 + subj3
// parseInt(string) -> For converting string to integer for mathematical operation
studentsList.forEach(function(part, index, studentsList) {
studentsList[index]['total'] = parseInt(studentsList[index]['sub1']) + parseInt(studentsList[index]['sub2']) + parseInt(studentsList[index]['sub3']);
});
// Here is the sorting of students on basis of 'total'
studentsList.sort((a,b) => (a.total > b.total) ? 1 : ((b.total > a.total) ? -1 : 0));

// Last student will have the first rank
// studentsList.length - 1 = last student in the sorted list
console.log('First rank student detail')
console.log(studentsList[studentsList.length - 1])
// All students
console.log('All students details')
console.log(studentsList)

最新更新