vue a-table 实现指定字段相同数据合并行

vue a-table 实现相同数据合并行

实现效果

代码实现

cloums数据格式

javascript 复制代码
const getColumns = function () {
  return [
    {
      title: "分类",
      dataIndex: "checked",
      width: "150px",
      customRender: (text, row, index) => {
        return {
          children:"文字",//合并行的标题
          attrs: {
            // 合并行 含col字段则合并,其他的必须设置为0!!
            rowSpan: row.col ? row.col : 0,
          },
        };
      },
    },
  ];
}

数据源格式

我们这里把相同的checked字段值进行合并

javascript 复制代码
[
  {
      "id": "65d45",
      "checked": "档案管理"
  },
  {
      "id": "65346",
      "checked": "档案管理"
  },
  {
      "id": "6514d",
      "checked": "动态监控"
  },
  {
      "id": "65d83",
      "checked": "动态监控"
  }
]

合并代码

javascript 复制代码
export const dealList = (arr) => {
  const list = arr
    .filter((item) => item.checked)
    .map((item) => {
      return {
        ...item,
        col: 0,
      };
    })
    .sort(function (a, b) {
      return (a.checked + "").localeCompare(b.checked + "");
    });
  // sort进行排序,方便计算
  const colList = [];
  arr.map((o) => {
    const arr = indexcount(list, o.checked);
    colList.push({
      col: arr.length,
      idex: arr[0],
    });
  });
  list.map((o, index) => {
    colList.map((m) => {
      if (index === m.idex) {
        o.col = m.col;
      }
    });
  });
  return list;
};
// 出现次数
function indexcount(arr, item) {
  var arr1 = [];
  for (var i = 0; i < arr.length; i++) {
    if (arr[i].checked == item) {
      arr1.push(i);
    }
  }
  return arr1;
}
相关推荐
张元清几秒前
React Hooks 性能优化:如何避免不必要的重新渲染
前端·javascript·面试
不甜情歌5 分钟前
JavaScript this绑定规则:告别踩坑指南!
前端·javascript
小J听不清12 分钟前
CSS 三种引入方式全解析:行内 / 内部 / 外部样式表(附优先级规则)
前端·javascript·css·html·css3
一步一个脚印一个坑24 分钟前
用 APM 全链路追踪,29ms 内定位到 Docker 部署的 SSL 配置错误
javascript·后端·监控
aircrushin41 分钟前
端到端AI决策架构如何重塑实时协作体验?
前端·javascript·后端
紫_龙1 小时前
最新版vue3+TypeScript开发入门到实战教程之DOM操作
javascript·vue.js·typescript
SuperEugene1 小时前
JS/TS 编码规范实战:Vue 场景变量 / 函数 / 类型标注避坑|编码语法规范篇
开发语言·javascript·vue.js
FlyWIHTSKY1 小时前
vue3中const的使用和定义
前端·javascript·vue.js
Chengbei111 小时前
Chrome浏览器渗透利器支持原生扫描!JS 端点 + 敏感目录 + 原型污染自动化检测|VulnRadar
javascript·chrome·安全·web安全·网络安全·自动化·系统安全
gongzemin1 小时前
怎么在VS Code 调试vue3 源码
前端·vue.js