如何使用 Vue 和 Element-UI 实现数据分组与汇总

如何使用 Vue 和 Element-UI 实现数据分组与汇总

这样,我们就实现了数据的分组和在表格中的展示。这样,我们就完成了数据的分组和汇总的功能。以上就是使用Vue和Element-UI实现数据的分组和汇总的过程。通过引入Element-UI的表格组件,我们可以很方便地对数据进行分组和展示,并且结

你是不是老碰到要Vue跟Element-UI配合处理数据分类和汇总的问题啊?比如说,开发在线考试成绩查系统时候,想要按科目看得分,还得算出平均分和最高分,是不是觉得好麻烦?别急,把它们两个凑合到一起,你就会发现其实挺简单的!

安装Vue和Element-UI:打下坚实的基础

第一步就是把Vue和Element-UI装进咱们的项目里,这就像盖房子要先挖个坑似的。这挺容易的,按命令行敲几个字符就能搞定,然后把它们丢进项目文件夹里等着就行了。搞定之后,咱们就可以开始大干一场!

npm install vue
npm install element-ui

数据分组:让数据排队站好

说白了,分组就是把我们觉得差不多的东西放到一块儿去。比如说我们有很多学生的成绩,咱们就按科目分一分呗。这时候,神器Element-UI你可不能忘记了!表格功能让你在Vue应用里增删自如,设定好表格和数据的样子,接下来,每门课程就是它自己的小天地,每个分数都可以找到属于自己的地方。

利用reduce方法:给数据分组

const scores = [
  { name: '张三', subject: '数学', score: 90 },
  { name: '李四', subject: '语文', score: 85 },
  { name: '王五', subject: '数学', score: 95 },
  { name: '赵六', subject: '语文', score: 92 },
  { name: '小明', subject: '数学', score: 88 },
  { name: '小红', subject: '英语', score: 91 }
];

破译Vue里的分类可是得码字儿哈。这时候,咱们就用到了“reduce”这个小妙招,这个东西厉害着,可以帮你挨个搞定数据,然后根据你想要的规矩分门别类。这感觉就像是请来了个小助手,帮你把一大堆杂七杂八的数据捋顺成有条理的样子。

import { Table, TableColumn } from 'element-ui';

展示分组后的数据:让表格说话

如何使用 Vue 和 Element-UI 实现数据分组与汇总

搞定完小组分组后,现在就轮到编辑数据表。这次我们要用到Element-UI的表格功能!这样一搞,每个科目都变成了一个简洁易懂的表格,跟宿舍布置得整整齐齐似的,看着真是舒心。这样一下子,工作变得简单多了~

data() {
  return {
    scores: scores,
    columns: [
      { label: '姓名', prop: 'name' },
      { label: '科目', prop: 'subject' },
      { label: '分数', prop: 'score' }
    ],
    groupedScores: []
  };
},

数据汇总:算算总账

mounted() {
  const groups = this.scores.reduce((acc, score) => {
    const group = acc.find(g => g.subject === score.subject);
    if (group) {
      group.scores.push(score);
    } else {
      acc.push({ subject: score.subject, scores: [score] });
    }
    return acc;
  }, []);
  this.groupedScores = groups;
},

快点,大伙儿一起算出各门科目平均分和高分!然后,咱们再填两栏,公布成绩,跟每间寝室挂上名字一样,标明学霸和学渣都是谁。

实战演练:运行代码,看看效果

  
    
      {{ row[column.prop] }}
    
  

搞定了,试试这段代码呗,看看是不是按照不同科目分类,还能显示每门课的平均分和最高分。要是结果符合预期,那真是咱们努力和智慧的结晶哟~

总结与展望:让世界更美好

搞定了Vue跟Element-UI后,整理数据简直小菜一碟!操作起来soeasy,看数据就当玩儿!那些被数据困扰的朋友们快来瞧瞧;有啥不懂的地方别客气,随时来问咱评论区等你

computed: {
  averageScore() {
    return this.groupedScores.map(group => {
      const scores = group.scores.map(score => score.score);
      const average = scores.reduce((sum, score) => sum + score, 0) / scores.length;
      return { subject: group.subject, average: average.toFixed(2) };
    });
  },
  maxScore() {
    return this.groupedScores.map(group => {
      const scores = group.scores.map(score => score.score);
      const max = Math.max(...scores);
      return { subject: group.subject, max: max };
    });
  }
},

原文链接:https://www.icz.com/technicalinformation/web/2024/06/17957.html,转载请注明出处~~~

0

评论0

请先

注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
没有账号? 注册  忘记密码?