所有分类
  • 所有分类
  • 后端开发
Vue神器!快速整理数据,一键生成表格

Vue神器!快速整理数据,一键生成表格

实现表格的分组合并功能。有了数据之后,我们就可以开始编写表格组件了。最后,我们需要将数据数组转换成表格需要的行列格式。来实现表格的分组合并功能了。我们只需要传递一个包含学生成绩的数据对象给表格组件,并在组件中实现上述功能。实现表格的分组合并

你们应该都知道Vue,就是我们经常用的JavaScript框架。网站开发常常少不了它。特别是有很多数据的话,Vue可以帮你快速整理成表格,看起来更加清晰明了,分析起来也更方便。那么今天就让我们学习一下怎么在Vue中使用这个超实用的表格功能!

创建表格组件

可以试试做个Vue那样的表格神器,直接用”`”、”`”、”`”这些标签来排版表格,超方便的!然后,有些行是要显示真实数据的,其他的就当总结咯。怎么分?看你手上有的数据。

数据结构设计

{
  'Math': {
    'totalCount': 100,
    'students': [
      { 'name': 'Alice', 'age': 18, 'gender': 'female', 'score': 90 },
      { 'name': 'Bob', 'age': 19, 'gender': 'male', 'score': 10 }
    ]
  },
  'English': {
    'totalCount': 80,
    'students': [
      { 'name': 'Charlie', 'age': 20, 'gender': 'male', 'score': 50 },
      { 'name': 'David', 'age': 21, 'gender': 'male', 'score': 30 }
    ]
  }
}

这儿有小孩子们的详细信息,名字、年纪,还有每学期的成绩单。你要是想知道哪些小朋友在哪些学科比较强,或者看看我们班的总成绩是多少,其实也挺容易的。只要做张小卡片,写下每个科目所有学生的分数,然后一加不就是出来了!

数据转换与处理

搞定那堆数据没?别急马上让他们变表格这个超级容易办到,只要用个功能强大的小函数。告诉我你们学生的考试成绩之类的信息,它立马就能帮你们生成一张看起来像表格的数据表。每个项目里面还有个”type”属性来区分普通行和总计行,这样就能看得更清楚咯。

function convertData(data) {
  const result = []
  for (const subject in data) {
    const subjectData = data[subject]
    result.push({
      'type': 'group',
      'subject': subject,
      'totalCount': subjectData.totalCount
    })
    for (const student of subjectData.students) {
      result.push({
        'type': 'item',
        'name': student.name,
        'age': student.age,
        'gender': student.gender,
        'score': student.score
      })
    }
  }
  return result
}

编写表格组件

Vue神器!快速整理数据,一键生成表格

想要弄清每个格子是什么类型的?(是单排的还是多排的呢)那就得先勾选表格的列头哦;然后按照格子类型往上添加两层行就好了;说到如何根据条件显示内容,这时可得用上v-if这个小技巧;最后,我们要做的就是把收到的数据整理成表格能理解的样式,不过别忘了,computed这个小帮手能帮我们时刻注意到数据的变动,一有改变它就能立马更新表格了!

实现分组合并功能

{{ column }}

搞定!这就是咱们的热身运动!先别急,Vue宝贝会帮忙把周围的普通行整理好,再给每组数据来个小总结。这么一弄,表格就好用多了,复杂数据也看得明明白白~

总结与展望

{{ column }}
{{ row[column] }} {{ row[column] }} {{ row[column] }}

用Vue搞表头合并超容易!只要把数据弄成表格的样子,渲染就交给Vue搞定。这样,数据看起来干净利落,处理大数据网页也快多了!

前端牛逼!大家都喜欢上了Vue。用它处理大数据简直轻松得不行,因为它能让数据看起来超级直观~只要把Vue表格搞好了,大数据也不怕了!希望这个小知识对你们有帮助哈

computed: {
  columns() {
    const columns = ['name', 'age', 'gender', 'score']
    return ['subject', ...columns, 'totalCount']
  },
  rows() {
    const data = convertData(this.data)
    const rows = []
    let group = null
    for (const item of data) {
      if (item.type === 'group') {
        if (group) {
          rows.push(group)
        }
        group = {}
        for (const column of this.columns) {
          group[column] = item[column]
        }
      } else {
        const row = {}
        for (const column of this.columns) {
          row[column] = item[column]
        }
        rows.push(row)
      }
    }
    if (group) {
      rows.push(group)
    }
    return rows
  }
}

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

评论0

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