46-作业讲解-计算总成绩和平均分-Computed属性

46-作业讲解-计算总成绩和平均分

效果如下图:

下面是代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv=" X-UA-Compatible" content="ie=edge">
    <title>46-作业讲解-计算总成绩和平均分</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js" ></script>
    <style>
        table,tr,th,td{
            border: 2px solid #000;
            /* 设置表格线条粗细,形状,颜色 */
        }
        table{
            border-collapse: collapse;
            /* collapse值作用:如果可能,边框会合并为一个单一的边框。会忽略 border-spacing 和 empty-cells 属性。 */
        }
        th,td{
            padding: 10px;
            /* 设置表格中单元格间距 */
        }
        td{
            text-align: center;
        }
    </style>
</head>
<body>
    <div id='app'>
        <table>
            <tr>
                <th v-for="item in titles">{{item}}</th>
            </tr>
            <tr v-for="item in arr">
                <td>{{item.name}}</td>
                <td>{{item.math}}</td>
                <td>{{item.chinese}}</td>
                <td>{{item.english}}</td>
                <td>{{item.english + item.math + item.chinese}}</td>
            </tr>
            <tr style="background-color: #999;">
                <td>平均分</td>
                <td>{{aver('math')}}</td>
                <td>{{aver('chinese')}}</td>
                <td>{{aver('english')}}</td>
                <td>{{aver('math')+aver('chinese')+aver('english')}}</td>
            </tr>
        </table>
    </div>
    <script>
        new Vue({
            el: '#app',
            data:{
                titles:['姓名','数学','语文','英语','总成绩'],
                arr:[
                    { name:'赵云', math:97, chinese:89, english:67 },
                    { name:'关羽', math:67, chinese:52, english:96 },
                    { name:'张飞', math:72, chinese:87, english:89 },
                    { name:'马超', math:95, chinese:89, english:59 },
                    { name:'黄忠', math:49, chinese:83, english:99 },
                ]
            },
            computed:{
                aver(){
                    return function(subject){
                        let ret = this.arr.reduce((pre,cur)=>{
                            return pre + cur[subject] 
                            // 切记,这里是cur[subject],不是cur.subject
                        },0)
                        return ret/this.arr.length
                    }
                }
                // 常规思维方法:
                // aver(){
                //     let ret = this.arr.reduce((pre,cur)=>{
                //        return pre + cur.math
                //     },0)
                //     return ret/this.arr.length
                // },
                // aver2(){
                //     let ret = this.arr.reduce((pre,cur)=>{
                //        return pre + cur.chinese
                //     },0)
                //     return ret/this.arr.length
                // },
                // aver3(){
                //     let ret = this.arr.reduce((pre,cur)=>{
                //        return pre + cur.english
                //     },0)
                //     return ret/this.arr.length
                // }
            }
        })
    </script>
</body>
</html>

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值