账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue多组数据的计算
    21
    0

    考卷生成的需求,尝试vue实现。
    代码大致结构如下:

    <div v-for="(big, index) in all" ><!-- 大题循环 -->
    
        预设小题分值:<input> 该题总分:{{bigtotal}}
        
        <button @click='addsmall'>增加一个小题按钮</button>
        
        <div v-for="(question, index) in big.question" ><!-- 小题循环 -->
        
        设置该小题分值:<input >
        
        </div>
        
    </div>
    <button @click='addbig'>增加一个大题按钮</button>
    
        var vu = new Vue({
            el: '#todo-list-example',
            data: {
                all:[],
                onebig:{qtype:'',title:'xxx',bmark:0,questions:[]},//大题数据模板
                onesmall:{smark:0,stem:'',answer1:'',answer2:'',answer3:'',answer4:''}//小题数据模板
            },
            methods: {
                addbig: function() {//增加大题
                   let onebig_str = JSON.parse(JSON.stringify(this.onebig));
                   this.all.push(onebig_str);
                    //....
                },
                addsmall: function(index) {//增加小题 
                   let onebig_str = JSON.parse(JSON.stringify(vu.onesmall));
                   this.all[index].questions.push(onebig_str);
                    //....
                        });
                },
            }
        })

    问题:预设小题分值的时候,则该大题内所有小题分值改变。修改某个小题的分值,该大题总分自动计算得到。
    由于大题小题都是按钮点击push生成,两个for循环这里,我怎么算分数呢?
    求实现思路

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 噜噜噜瓜o3o 普通会员 1楼

      在Vue中,我们可以使用数组或对象来存储多个数据。为了计算这些数据,我们可以使用JavaScript的数组方法,如map()filter()reduce()

      以下是一个简单的例子,展示如何使用map()方法计算一个数组中的每个元素的平方:

      ```javascript const numbers = [1, 2, 3, 4, 5];

      numbers.map(num => num * num); ```

      在这个例子中,map()方法接收一个函数作为参数,这个函数接收一个值作为参数,然后返回一个新的值。在这个例子中,我们传递了一个函数num => num * num,这个函数接收一个值num,然后返回num * num的平方。

      如果你有一个对象数组,你可以使用filter()方法来过滤出具有特定属性的元素:

      ```javascript const students = [ { name: 'Alice', age: 20 }, { name: 'Bob', age: 22 }, { name: 'Charlie', age: 18 } ];

      const studentsWithAge = students.filter(student => student.age > 18);

      console.log(studentsWithAge); ```

      在这个例子中,filter()方法接收一个函数作为参数,这个函数接收一个值作为参数,然后返回一个新的值。在这个例子中,我们传递了一个函数student => student.age > 18,这个函数接收一个值student,然后返回student.age > 18的布尔值。filter()方法将所有返回true的元素添加到结果数组中。

      如果你有一个数组和一个对象数组,你可以使用reduce()方法来计算两个数组中的所有元素的乘积:

      ```javascript const numbers = [1, 2, 3, 4, 5]; const students = [ { name: 'Alice', age: 20 }, { name: 'Bob', age: 22 }, { name: 'Charlie', age: 18 } ];

      const student积 = numbers.reduce((acc, num) => acc * num, 1);

      console.log(student积); ```

      在这个例子中,reduce()方法接收两个函数作为参数,第一个函数接收一个初始值作为参数,然后返回一个值。第二个函数接收两个值作为参数,第一个值是累加器,第二个值是当前元素。reduce()方法将所有返回acc的值相乘,然后返回结果。在这个例子中,我们传递了两个函数acc => acc * numacc => acc,第一个函数接收一个值acc作为参数,第二个函数接收一个值num作为参数。reduce()方法将所有返回acc的值相乘,然后返回结果。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部