码迷,mamicode.com
首页 > 其他好文 > 详细

数据表格的生成

时间:2014-08-30 19:01:29      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   color   io   ar   for   数据   art   

公司项目需要,动态生成表格数据。

代码还没有简化,暂时这样了!周末还加班!悲剧!

 

 

 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 arr
55          * @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));

 

数据表格的生成

标签:des   style   blog   color   io   ar   for   数据   art   

原文地址:http://www.cnblogs.com/kbqncf/p/3946695.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!