首页 > 代码库 > 数据表格的生成
数据表格的生成
公司项目需要,动态生成表格数据。
代码还没有简化,暂时这样了!周末还加班!悲剧!
1 /** 2 * @param array 3 * @description 笛卡尔积变换 4 * @returns {*[]} 5 */ 6 function cartesianProduct() { 7 var _returnArr = [ 8 [], 9 []10 ];//结果集11 var _arrG = Array.prototype.slice.call(arguments, 0);//等到参数数组12 var _argumentslength = _arrG.length;//参数长度13 var _totalRows = 1;//扁平化数据后的总行数14 var _serialize = [];//序列化数组15 for (var i = 0; i < _argumentslength; i++) {16 _totalRows *= _arrG[i].length;17 _returnArr[1].push(_arrG[i].length);18 }19 for (var i = 0; i < _totalRows; i++) {20 _serialize[i] = [];21 }22 for (var i = 0; i < _argumentslength; i++) {23 var item=_arrG.shift();24 var itemLength = item.length;//第一个元素的长度25 var stepLength;//多少步进行一次数据操作26 if (i === 0) {27 stepLength = _totalRows / itemLength;28 } else {29 stepLength = _totalRows / (itemLength * arguments[i - 1].length);30 }31 if (_arrG.length === 0) {32 for (var n = 0; n < _totalRows; n++) {33 _serialize[n].push(item[Math.floor(n % itemLength)]);34 }35 } else {36 if (i === 0) {37 for (var n = 0; n < _totalRows; n++) {38 _serialize[n].push(item[Math.floor(n / stepLength)]);39 }40 } else {41 for (var n = 0; n < _totalRows; n++) {42 _serialize[n].push(item[Math.floor(n / stepLength) % itemLength]);43 }44 }45 }46 }47 _returnArr[0] = _serialize;48 _returnArr.push(_totalRows);49 return _returnArr;50 }51 52 /**53 * @description table数据的组装54 * @param arr55 * @returns {string}56 */57 var assembleGridTable = function (arr) {58 var _arrResult = arr[0];//序列化的数据59 var _num = arr[1];//数据集长度信息60 var _totalRows = arr[2];//数据总行数61 var scanStep;//扫描长度62 for (var i = 0; i < _num.length - 1; i++) {63 if (i === 0) {64 scanStep = _totalRows / _num[i];//当在第scanStep位置的时候,添加信息65 } else {66 scanStep = _totalRows / (_num[i] * _num[i - 1]);//当在第scanStep位置的时候,添加信息67 }68 for (var n = 0, _len = _arrResult.length; n < _len; n++) {//循环数组的长度69 if (n % scanStep === 0) {70 _arrResult[n][i] = _arrResult[n][i].replace(‘d‘, ‘d rowspan="‘ + scanStep + ‘"‘);71 } else {72 _arrResult[n][i] = ‘‘;73 }74 }75 }76 //输出77 var _str = ‘‘;78 for (var i = 0, _len = _arrResult.length; i < _len; i++) {79 _str += ‘<tr>‘ + _arrResult[i].join(‘‘) + ‘</tr>‘;80 }81 return _str;82 }83 84 var ck = cartesianProduct([‘<td>搞基</td>‘],[‘<td>美女</td>‘,‘<td>野兽</td>‘], [‘<td>a</td>‘], [‘<td>美帝</td>‘, ‘<td>天朝</td>‘, ‘<td>毛子</td>‘]);85 $(‘#J-table‘).html(assembleGridTable(ck));
数据表格的生成
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。