<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
<script>
//1班同一分数相同的人数
//方法1建立数组,遍历给对象当属性名,如果相等的成绩,则值加1
class oneClassStudent {
constructor() {
this.grade = parseInt(Math.random() * 100);
}
}
let gradeAry = [];
let myFun = function () {
let obj = {};
for (let i = 1; i < 33; i++) {
let grades = new oneClassStudent;
gradeAry.push(grades.grade);
}
console.log(gradeAry);
for (let i = 0, k = gradeAry.length; i < k; i++) {//77,23,77
let item = gradeAry[i];
obj[item] = (obj[item] + 1) || 1;
}
return obj;
}
console.log(myFun());
//1班同一分数相同的人数
//方法2,如果我在数组里面放对象[{name:p,scor:2},{name:b,scor:32},{name:c,scor:12}]
let TwoClassStudent = [{ name: "王二", scor: 12 }, { name: "李四", scor: 32 }, { name: "彭一", scor: 42 }, { name: "老六", scor: 12 }];
let sameScore = function (objArray, property) {
return objArray.reduce(function (new_obj, valve) {
let key = valve[property];//当前的valve是数组对象里面的对象,property是索引
if (!new_obj[key]) {
new_obj[key] = [];
}
new_obj[key].push(valve);
return new_obj;
}, {});//初始值是个数组
}
let oneClass_score = sameScore(TwoClassStudent, 'scor');
console.log(oneClass_score);
// 12: Array[{ … }, { … }]
// 0: Object { name: "王二", scor: 12 }
// 1: Object { name: "老六", scor: 12 }
// length: 2
// < prototype >: Array[]
// 32: Array[{ … }]
// 0: Object { name: "李四", scor: 32 }
// length: 1
// < prototype >: Array[]
// 42: Array[{ … }]
// 0: Object { name: "彭一", scor: 42 }
// length: 1
// < prototype >: Array[]
</script>
</html>