el-table 如何实现行列转置?

在某些需求里需要用到 行列转置 的表格,但 el-table 提供的基本表格是不支持行列转置的,这样就需要对这个表格进行二次开发。下面来看具体实现的效果:
在这里插入图片描述

具体实现方式

基本原理就是对原有的可渲染的数据结构进行处理,表头与表格数据要按动态的数据去处理。这里我们提供了两种方式去实现:
原数据格式:

tableHead:  [{prop: 'date',label: '日期',},{prop: 'name',label: '姓名',},{prop: 'address',label: '地址',},],
tableData: [{date: '2016-05-02',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄'},{date: '2016-05-04',name: '王小虎',address: '上海市普陀区金沙江路 1517 弄'},{date: '2016-05-01',name: '王小虎',address: '上海市普陀区金沙江路 1519 弄'},{date: '2016-05-03',name: '王小虎',address: '上海市普陀区金沙江路 1516 弄'}]

第一种:
初始化页面时对数据进行手动循环处理,html 部分借助 template 渲染,缺点是处理略复杂,具体代码如下(只摘抄了关键代码,省略了 vue 的基本结构):

<el-table border:data="tableDataNew" ><el-table-columnv-for="(item, index) in columnData":key="index":prop="item.prop":label="item.label"><template slot-scope="{ row }"><div>{{ row[item.prop] }}</div></template></el-table-column></el-table>mounted(){this.init()},init() {const columnObj = {} //创建标题数组中第一个对象columnObj.label = '日期'//第一个标题名称columnObj.prop = 'title'//第一个标题名称对应的字段this.columnData.push(columnObj) //第一个标题 放入标题数组中this.tableDataNew.push({ 'title': '姓名' })this.tableDataNew.push({ 'title': '地址' })let _this = this;var props = 'prop' //自定义字段名称this.tableData.forEach((item, index) => {const columnObj = {}columnObj.label = item.date// 每一列的标题的名称columnObj.prop = props + index //自定义每一列标题字段名称_this.columnData.push(columnObj)this.$set(this.tableDataNew[0], columnObj.prop, item.name)this.$set(this.tableDataNew[1], columnObj.prop, item.address)})}

第二种:
借助 computed 计算属性、 reduce 函数实现数据处理,但是隐藏了原来的表头,增加了样式处理的成本,优点是处理逻辑比较简单。

<el-tablestyle="width: 100%":data="tableDataNew":show-header="false"><el-table-columnv-for="(item, index) in columnData":key="index":prop="item"></el-table-column></el-table>computed: {columnData() {return this.tableData.reduce((pre, cur, index) => pre.concat(`value${index}`), ['title'])},tableDataNew() {return this.tableHead.map(item => {return this.tableData.reduce((pre, cur, index) => Object.assign(pre, {['value' + index]: cur[item.prop]}), {'title': item.label});});}},

处理之后的表格数据格式:

columnData:["title", "value0", "value1", "value2", "value3"]tableDataNew:["title", "value0", "value1", "value2", "value3"] 

到这里两种方式就介绍完了,大家可以尝试,如果有更好的方式,欢迎大家不吝赐教。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/54082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机的错误计算(九十三)

摘要 探讨 log(y,x) 即以 x 为底 y 的对数的计算精度问题。 Log(y,x)运算是指 x 为底 y 的对数。 例1. 计算 log(123667.888, 0.999999999999999) . 不妨在Python中计算&#xff0c;则有&#xff1a; 若在 Excel 单元格中计算&#xff0c;则有几乎同样的输出&#xff1a; 然…

模型部署基础

神经网络的模型部署是将训练好的神经网络模型应用到实际系统中&#xff0c;以实现预测、分类、推荐等任务的过程。下图展示了模型从训练到部署的整个流程&#xff1a; 1.模型部署的平台 在线服务器端部署 在线服务器端部署适用于处理大模型、需要精度优先的应用场景&#xff…

CSCC2024数据库内核赛道Profile记录

同学参加CSCC2024数据库系统赛道比赛&#xff0c;我和他一起研究了一些优化的case&#xff0c;最后成功拿到全国2/325。在这里记录一下我们讨论优化过的问题&#xff08;建议把源码下下来边读边搜代码&#xff0c;否则会晕&#xff09; 行锁占用内存过大 Q&#xff1a;TPCC测…

liunx 计划任务

任务脚本 #!/bin/bash# 配置项 # Oracle 安装路径&#xff0c;根据实际情况修改&#xff0c;查看安装地址&#xff1a;cat /etc/oratab ORACLE_HOME/home/database/oracle/product/11.2.0 # Oracle 实例名&#xff0c;根据实际情况修改 ORACLE_SID # 数据库用户名 USER # 数据…

OpenCV运动分析和目标跟踪(1)累积操作函数accumulate()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 将一个图像添加到累积图像中。 该函数将 src 或其部分元素添加到 dst 中&#xff1a; dst ( x , y ) ← dst ( x , y ) src ( x , y ) if mask…

网络基础,协议,OSI分层,TCP/IP模型

网络的产生是数据交流的必然趋势&#xff0c;计算机之间的独立的个体&#xff0c;想要进行数据交互&#xff0c;一开始是使用磁盘进行数据拷贝&#xff0c;可是这样的数据拷贝效率很低&#xff0c;于是网络交互便出现了&#xff1b; 1.网络是什么 网络&#xff0c;顾名思义是…

使用Serilog在.NET应用程序中写日志文件

在开发.NET应用程序时&#xff0c;良好的日志系统是至关重要的。它可以帮助我们跟踪应用程序的运行情况&#xff0c;更好地理解应用程序的行为&#xff0c;以及在出现问题时进行调试。今天&#xff0c;我要介绍的是一个强大且易于使用的日志库——Serilog。 什么是Serilog&…

串口接收不到数据之电阻虚焊bug分析思路

单片机和EC移远通信模块进行通信&#xff0c;相同的代码运行在相同的硬件上&#xff0c;但是一个能联网&#xff0c;一个因为没有EC的应答连不上网。 开始分析&#xff0c;排除软件问题&#xff0c;给EC模块发为什么没应答&#xff1f; 1.发送失败 2.接收失败 排除情况2&#x…

汽车租赁系统1.0版本

汽车租赁系统1.0版本比较简陋&#xff0c;以后还会有2.0、3.0……就像《我爱发明》里面的一代机器二代机器&#xff0c;三代机器一样&#xff0c;是一个迭代更新的过程&#xff08;最近比较忙&#xff0c;可能会很久&#xff09;&#xff0c;这个1.0版本很简陋&#xff0c;也请…

Python+Pytest框架,“api_key.py文件怎么编写“?

1、在"api_keyword"文件夹下新增"api_key.py" import allure import requests import json import jsonpath from deepdiff import DeepDifffrom config import *allure.title("测试用例执行") class ApiKey:allure.step(">>>:开…

中学 教资 科目二

第一章 1. 简述生产力与教育的关系 (1)生产力对教育的制约作用–生产力水平决定教育发展水平 生产力水平决定教育的规模和速度生产力制约人才培养的规格和教育结构生产力制约教学内容、方法、组织形式与手段制约龟(规模)速(速度)够(结构)防(方法)守(手段) (2)…

跨平台开发新视角:利用Android WebView实现Web内容的原生体验

在移动应用开发领域&#xff0c;跨平台解决方案一直是一个热门话题。开发者们不断寻求能够同时在iOS和Android平台上提供一致用户体验的方法。而Android的WebView组件&#xff0c;作为一个强大的工具&#xff0c;允许开发者在Android应用中嵌入Web内容&#xff0c;为用户提供接…

【LeetCode】2309:兼具大小写的最好英文字母

题目描述 见LeetCode.2309题目。 C 以下是官方题解当中给出做法的复现。 class Solution { public:string greatestLetter(string s) {unordered_set<char> ht(s.begin(), s.end());for (int i25; i>0; i--){if (ht.count(a i) > 0 && ht.count(A i)…

Vue 2中的this指向详解

在JavaScript中&#xff0c;this的指向是许多开发者经常遇到的问题&#xff0c;尤其是在使用Vue这样的框架时。在Vue 2中&#xff0c;理解this的指向对于正确地访问组件的数据和方法至关重要。 1. this在Vue组件中的指向 在Vue组件的选项中&#xff0c;this通常指向当前组件实…

Maven从入门到精通(三)

一、Settings 配置 settings.xml 用来配置 maven 项目中的各种参数文件&#xff0c;包括本地仓库、远程仓库、私服、认证等信息。 全局 settings、用户 setting、pom 的区别&#xff1a; 全局 settings.xml 是 maven 的全局配置文件&#xff0c;一般位于 ${maven.home}/conf…

tomcat改默认登录页面

<!-- 在 conf/server.xml 文件中的 <Host> 元素内部添加如下代码 --> <Context path"" docBase"D:\tomcat\apache-tomcat-8.5.72\webapps\tb" debug"0" reloadable"true"/> 这里的各个属性含义如下&#xff1a; pa…

安全工具 | 使用Burp Suite的10个小tips

Burp Suite 应用程序中有用功能的集合 img Burp Suite 是一款出色的分析工具&#xff0c;用于测试 Web 应用程序和系统的安全漏洞。它有很多很棒的功能可以在渗透测试中使用。您使用它的次数越多&#xff0c;您就越发现它的便利功能。 本文内容是我在测试期间学到并经常的主要…

音视频入门基础:AAC专题(4)——ADTS格式的AAC裸流实例分析

一、ADTS格式的AAC裸流实例分析 在《音视频入门基础&#xff1a;AAC专题&#xff08;3&#xff09;——AAC的ADTS格式简介》中对AAC的ADTS格式进行了简介。下面用一个具体的例子来对ADTS格式的AAC裸流进行分析。 通过《音视频入门基础&#xff1a;AAC专题&#xff08;2&#x…

获取对象的key和value值

1.获取对象的key值 let obj{ name:张三, age:18 }let aObject.keys(obj) console.log(a) //["name","age"]获取对象的value值 name:张三, age:18 }let aObject.keys(obj) console.log(a) //["张三",18] Object.values(obj)

【C-项目】网盘(一期)

概述 登录服务器后&#xff0c;即可浏览服务器的文件系统。通过命令上传或下载文件。 服务器使用tcp类型的套接字&#xff0c;每收到一个连接请求&#xff0c;就新开一个子进程去处理 一期功能 客户端可以使用的命令 命令解析ls显示当前工作目录的所有文件pwd显示当前工作目录…