当前位置: 首页 > news >正文

渭城区住房和城乡建设局网站b2b电子商务网

渭城区住房和城乡建设局网站,b2b电子商务网,wordpress 评论框,海南跨境电商平台有哪些方案一 这段代码的功能是根据用户选择的行和列数据,生成一个适合复制粘贴的字符串表格。代码会先按列的 id 从小到大排序,再根据行列的选择关系将数据按顺序填入表格,每行之间使用换行符分隔,每列之间使用制表符分隔。如果某一行…

方案一

这段代码的功能是根据用户选择的行和列数据,生成一个适合复制粘贴的字符串表格。代码会先按列的 id 从小到大排序,再根据行列的选择关系将数据按顺序填入表格,每行之间使用换行符分隔,每列之间使用制表符分隔。如果某一行缺少对应列的数据,则在该位置插入空格。

注意事项

  1. 列排序:代码先根据 id 对所选列数据进行排序,确保生成的表格中列顺序一致。
  2. 行列对应关系:每列数据包含一个 _X_ROW_KEY 属性,表示它对应的行。代码会检查列和行的 _X_ROW_KEY 是否匹配,只有匹配的列才会填入数据,否则填入空位。
  3. 空位占位:如果某行在某列没有数据,为了保持列对齐,会插入空字符串。

代码字段解释

  • selectedRows:用户选择的行数据,每行数据代表一个完整的数据对象,其中包含了字段 idnamesex 等字段,并用 _X_ROW_KEY 标记它属于哪一行。
  • selectedColumns:用户选择的列数据,每列包含 field(对应行的字段)、title(列标题)、id(列的唯一标识)等属性。_X_ROW_KEY 数组标记该列在哪些行中有数据。
  • sortedColumns:排序后的列数组,确保列输出时按 id 的升序排列。

代码实现

// 所选行数据
const selectedRows = [{ "id": 1, "name": "张三", "age": 30, "sex": "男", "job": "前端", "address": "中国xxxxxxxxxx", "_X_ROW_KEY": "row_8" },{ "id": 2, "name": "李四", "age": 30, "sex": "男", "job": "后端", "address": "中国xxxxxxxxxx", "_X_ROW_KEY": "row_10" }
];// 所选列数据
const selectedColumns = [{ "property": "name", "field": "name", "title": "姓名", "width": 100, "fixed": "left", "align": "left", "filterMultiple": true, "id": "col_09", "_X_ROW_KEY": ["row_8"] },{ "property": "job", "field": "job", "title": "职务", "width": 100, "fixed": "left", "align": "left", "filterMultiple": true, "id": "col_34", "_X_ROW_KEY": ["row_10"] },{ "property": "address", "field": "address", "title": "地址", "width": 100, "fixed": "left", "align": "left", "filterMultiple": true, "id": "col_35", "_X_ROW_KEY": ["row_10","row_8"] },{ "property": "sex", "field": "sex", "title": "性别", "width": 100, "fixed": "left", "align": "left", "filterMultiple": true, "id": "col_10", "_X_ROW_KEY": ["row_8","row_10"] }
];// 组装数据结构并生成拼接字符串
function assembleSelectedDataString(selectedRows, selectedColumns) {// 对 selectedColumns 按列的 id 从小到大排序,确保输出中列的顺序一致const sortedColumns = selectedColumns.sort((a, b) => parseInt(a.id.replace("col_", "")) - parseInt(b.id.replace("col_", "")));// 初始化一个空数组,用来存储每一行的拼接数据const rows = [];// 遍历行数据,对每一行处理一次selectedRows.forEach(row => {const rowKey = row._X_ROW_KEY; // 获取当前行的唯一标识符,用来匹配列数据const rowData = []; // 存储当前行对应的每列数据// 遍历排序后的列数据,保证列顺序输出正确sortedColumns.forEach(column => {// 检查当前列是否包含该行数据的 _X_ROW_KEYif (column._X_ROW_KEY.includes(rowKey)) {// 如果列的 _X_ROW_KEY 包含当前行的 rowKey,则插入对应的字段值rowData.push(row[column.field]);} else {// 如果不包含,则插入空字符串,占位使列对齐rowData.push("");}});// 将当前行数据(用制表符连接每列数据)添加到 rows 数组中rows.push(rowData.join("\t"));});// 将所有行数据连接成一个字符串,每行之间用换行符分隔return rows.join("\n");
}// 调用函数获取拼接后的字符串
const selectedDataString = assembleSelectedDataString(selectedRows, selectedColumns);
console.log(selectedDataString);

示例输出

张三	男		中国xxxxxxxxxx男	后端	中国xxxxxxxxxx

方案二

这段代码的目的是根据输入的行数据和列数据生成一个格式化的字符串,字符串中的列使用制表符 (\t) 分隔,行使用换行符 (\n) 分隔,方便输出和阅读。每一列的数据会根据最大列宽对齐,以确保输出的格式整齐。

const data = [{ "rowIndex": 2, "columnIndex": 5, "value": "2218123959094757194" },{ "rowIndex": 2, "columnIndex": 6, "value": "2-6" },{ "rowIndex": 3, "columnIndex": 5, "value": "2218123959094757194" },{ "rowIndex": 3, "columnIndex": 6, "value": "3-6" },{ "rowIndex": 4, "columnIndex": 5, "value": "2218123959094757194" },{ "rowIndex": 4, "columnIndex": 6, "value": "4-6" },{ "rowIndex": 5, "columnIndex": 5, "value": "2218123959094757194" },{ "rowIndex": 5, "columnIndex": 6, "value": "5-6" },{ "rowIndex": 6, "columnIndex": 5, "value": "2218123959094757194" },{ "rowIndex": 7, "columnIndex": 7, "value": "7-7-7-7-7-7" },{ "rowIndex": 7, "columnIndex": 8, "value": "7-8-7-8-7-8" },
];// 定义一个函数,用于生成格式化的表格字符串
function generateCompactTableString(data) {// 计算表格的最大行索引const maxRow = Math.max(...data.map(item => item.rowIndex));// 提取所有列索引并去重、排序,得到一个有序的列索引数组const columnIndices = Array.from(new Set(data.map(item => item.columnIndex))).sort((a, b) => a - b);// 创建一个二维数组,用于存储每个单元格的内容// 行数为 maxRow + 1,列数为 columnIndices 的长度,初始化为空字符串const table = Array.from({ length: maxRow + 1 }, () => Array(columnIndices.length).fill(""));// 遍历输入数据,将值填入对应的表格位置data.forEach(item => {const { rowIndex, columnIndex, value } = item; // 解构出行索引、列索引和值const colIndex = columnIndices.indexOf(columnIndex); // 找到列索引在表格中的位置if (colIndex !== -1) { // 如果该列索引存在table[rowIndex][colIndex] = value; // 将值填入表格}});// 计算每列的最大宽度,以便后续对齐const columnWidths = columnIndices.map((_, colIndex) => Math.max(...table.map(row => row[colIndex].length)) // 计算每列的最大字符长度);// 过滤掉空行const nonEmptyRows = table.filter(row => row.some(cell => cell !== "")); // 只保留至少有一个非空单元格的行// 将表格内容转换为字符串,用制表符分隔列return nonEmptyRows.map(row => row.map((cell, colIndex) => cell.padEnd(columnWidths[colIndex]) // 确保每列宽度一致,使用空格填充).join("\t") // 用制表符连接列).join("\n"); // 用换行符连接行
}// 输出格式化后的表格字符串
const compactTableString = generateCompactTableString(data);
console.log(compactTableString); // 打印输出结果

各字段解释

  1. data:一个包含多个对象的数组。每个对象代表一个单元格的数据,包含以下字段:

    • rowIndex:表示数据所在的行索引(从0开始计数)。
    • columnIndex:表示数据所在的列索引(从0开始计数)。
    • value:该单元格要显示的内容。
  2. generateCompactTableString(data):一个函数,用于生成格式化的表格字符串。

    • 参数data,上面定义的数组。
    • 返回值:格式化后的表格字符串,列用制表符分隔,行用换行符分隔。
  3. maxRow:通过遍历 data 数组,找出最大的 rowIndex 值,以确定表格的行数。

  4. columnIndices:使用 Set 来提取并去重所有的 columnIndex,然后将其排序,得到一个有序的列索引数组。

  5. table:一个二维数组,用于存储每个单元格的内容。它的行数为 maxRow + 1,列数为 columnIndices 的长度,初始时填充为空字符串。

  6. padEnd:用于确保每列的宽度一致,通过在每个单元格内容后面填充空格。

http://www.ds6.com.cn/news/15080.html

相关文章:

  • 有没有专门做设计的网站百度推广官网入口
  • 网站有哪些区别百度指数在线查询小程序
  • wordpress菜单图教济南seo优化公司助力网站腾飞
  • wordpress提示恶意注册苏州seo公司
  • 网站开发更新记录手机如何建网站
  • 网站建设 技术谷歌外链工具
  • 西安建站系统中国第三波疫情将在9月份
  • 网站做游客留言做有没有可以代理推广的平台
  • 企业网站建设服务热线百度指数可以查询到哪些内容
  • 做白酒用哪个分类信息网站兰州seo
  • 新的购物网站怎么做流量分析优秀的网页设计案例
  • 做网站神器18种最有效推广的方式
  • 最近深圳疫情严重吗西安seo建站
  • 自己建网站教程百度收录工具
  • 免费图标下载网站销售外包公司
  • 东营网站搭建uc推广登录入口
  • wordpress 后台被锁定seo专业培训费用
  • 医疗网站 seo怎么做原创代写文章平台
  • 别墅装修公司排名前十强seo管家
  • wordpress的客服电话企业网站排名优化
  • 怎么在网上做公司网站成都高端网站建设哪家好
  • 简述网站制作的一般流程优化合作平台
  • 找个人做网站的百度com打开
  • 做h5哪个网站好用最近10条重大新闻
  • 长春市疫情最新消息今天行动轨迹奉化seo页面优化外包
  • 南宁微网站制作需要多少钱关键词推广技巧
  • 南京市的网站是由那几家公司做的浏览器网址
  • 网站策划人员需要做哪些工作seo综合查询国产
  • 网站要怎么做的吗整合营销策划
  • 做韩国网站数据库营销