这里直接正题
// a)求所有学生总成绩
// b)求所有学生的语文总成绩
// c)求所有超过60分的学生语文总成绩
// d)删除不及格的科目信息
var arr= [
{ "id": 1, "name": "张三", "score": 55, "subject": "语文" },
{ "id": 2, "name": "李四", "score": 76, "subject": "语文" },
{ "id": 3, "name": "王五", "score": 67, "subject": "语文" },
{ "id": 4, "name": "张三", "score": 23, "subject": "数学" },
{ "id": 5, "name": "李四", "score": 81, "subject": "数学" },
{ "id": 6, "name": "王五", "score": 64, "subject": "数学" },
]
这次我直接把分析加到注释里,否则很难解释清楚,直接看代码吧!
<script type="text/javascript">
// a)求所有学生总成绩
// b)求所有学生的语文总成绩
// c)求所有超过60分的学生语文总成绩
// d)删除不及格的科目信息
var arr= [
{ "id": 1, "name": "张三", "score": 55, "subject": "语文" },
{ "id": 2, "name": "李四", "score": 76, "subject": "语文" },
{ "id": 3, "name": "王五", "score": 67, "subject": "语文" },
{ "id": 4, "name": "张三", "score": 23, "subject": "数学" },
{ "id": 5, "name": "李四", "score": 81, "subject": "数学" },
{ "id": 6, "name": "王五", "score": 64, "subject": "数学" },
]
var sum=arr.reduce(function(res,item){
//把数组拉开以后,每个对象的 score的值相加
return res+=item.score;
},0)
document.write("总成绩:"+sum+"<br>")
var sumCh=arr.reduce(function(res,item){
//item 下面的对象等于语文,把它所对应的item.score相加;
if(item.subject==='语文'){
res+=item.score;
}
return res;
},0)
document.write("语文成绩:"+sumCh+"<br>");
var sumJige=arr.reduce(function(res,item){
//如果item.subject 是语文并且 item.score是大于等于60分的
//累加 item.score;
if(item.subject==='语文' && item.score>=60){
res+=item.score;
}
return res;
},0);
//上面的0是把res 的值初始化 和 var res = 0; 是一样的,不初始化的话 它会默认等于第 一个item的值(很重要)
document.write("及格语文成绩:"+sumJige+"<br>")
//过滤出score>=60的值 并且返回新的数组。
var jigeArr=arr.filter(function(item){
return item.score>=60;
});
console.log(jigeArr);
</script>