鱼C论坛

 找回密码
 立即注册
查看: 4071|回复: 6

[技术交流] 优化重复代码 | 【有奖问答】

[复制链接]
发表于 2017-8-30 10:45:22 | 显示全部楼层 |阅读模式
50鱼币
本帖最后由 不二如是 于 2017-8-30 10:48 编辑

这是一段“重复性”很高的代码


哪位鱼油可以通过封装函数对下面的代码优化呢?

友情提示:

1、4个不同的id,jsonTip1、jsonTip2、jsonTip3、jsonTip4

2、调用方法均一样,除了参数col索引不一样,方法均相同

3、4个方法,appendD1()、appendD2()、appendD3()、appendD4()




  1. function appendD1() {
  2.     $.getJSON("js/data.json", function (data) {
  3.         var $jsontip = $("#jsonTip1");

  4.         function sortByKey(array, key) {
  5.             return array.sort(function (a, b) {
  6.                 var x = a[key];
  7.                 var y = b[key];
  8.                 return ((x > y) ? -1 : ((x < y) ? 1 : 0));
  9.             });
  10.         }

  11.         var newdata = $.extend({}, data.data);
  12.         newdata.rows = [];

  13.         $.each(data.data.rows, function (i, r) {
  14.             var item = {};
  15.             $.each(r.cells, function (j, c) {
  16.                 item["col" + j] = c;
  17.             })
  18.             newdata.rows.push(item);
  19.         })

  20.         newdata = sortByKey(newdata.rows, 'col1');


  21.         // 绘制
  22.         var strHtml = "";//存储数据的变量
  23.         $jsontip.empty();//清空内容
  24.         $.each(newdata, function (infoIndex, info) {
  25.             strHtml += `
  26.             <tr>
  27.               <td><b class="roleNum">${infoIndex + 1}</b></td>
  28.               <td>${info["col0"]}</td>
  29.               <td>${info["col1"]}</td>
  30.                       </tr>
  31.           `;
  32.         })
  33.         $jsontip.html(strHtml);//显示处理后的数据


  34.         // 前十个tr中,第一个td中的b,设置背景样式。
  35.         $.each($('#div1 tr').slice(1, 11), function (i, item) {
  36.             $(item).children('td').eq(0).children('b').css("background-color", "#3590de");
  37.         });

  38.         $.each($('#div1 tr').slice(1, 7), function (i, item) {
  39.             $(item).children('td').eq(1).css("color", "#0002c0");
  40.         });
  41.     })
  42. }

  43. function appendD2() {

  44.     $.getJSON("js/data.json", function (data) {
  45.         var $jsontip = $("#jsonTip2");

  46.         // 排序测试
  47.         function sortByKey(array, key) {
  48.             return array.sort(function (a, b) {
  49.                 var x = a[key];
  50.                 var y = b[key];
  51.                 return ((x > y) ? -1 : ((x < y) ? 1 : 0));
  52.             });
  53.         }


  54.         var newdata = $.extend({}, data.data);
  55.         newdata.rows = [];

  56.         $.each(data.data.rows, function (i, r) {
  57.             var item = {};
  58.             $.each(r.cells, function (j, c) {
  59.                 item["col" + j] = c;
  60.             })
  61.             newdata.rows.push(item);
  62.         })

  63.         newdata = sortByKey(newdata.rows, 'col2');


  64.         // 绘制
  65.         var strHtml = "";//存储数据的变量
  66.         $jsontip.empty();//清空内容
  67.         $.each(newdata, function (infoIndex, info) {
  68.             strHtml += `
  69.             <tr>
  70.               <td><b class="roleNum">${infoIndex + 1}</b></td>
  71.               <td>${info["col0"]}</td>
  72.               <td>${info["col2"]}</td>
  73.                       </tr>
  74.           `;
  75.         })
  76.         $jsontip.html(strHtml);//显示处理后的数据


  77.         $.each($('#div2 tr').slice(1, 5), function (i, item) {
  78.             $(item).children('td').eq(0).children('b').css("background-color", "#3590de");
  79.         });

  80.         $.each($('#div2 tr').slice(1, 3), function (i, item) {
  81.             $(item).children('td').eq(1).css("color", "#0002c0");
  82.         });
  83.     })
  84. }

  85. function appendD3() {
  86.     $.getJSON("js/data.json", function (data) {
  87.         var $jsontip = $("#jsonTip3");

  88.         // 排序测试
  89.         function sortByKey(array, key) {
  90.             return array.sort(function (a, b) {
  91.                 var x = a[key];
  92.                 var y = b[key];
  93.                 return ((x > y) ? -1 : ((x < y) ? 1 : 0));
  94.             });
  95.         }


  96.         var newdata = $.extend({}, data.data);
  97.         newdata.rows = [];

  98.         $.each(data.data.rows, function (i, r) {
  99.             var item = {};
  100.             $.each(r.cells, function (j, c) {
  101.                 item["col" + j] = c;
  102.             })
  103.             newdata.rows.push(item);
  104.         })

  105.         newdata = sortByKey(newdata.rows, 'col3');


  106.         // 绘制
  107.         var strHtml = "";//存储数据的变量
  108.         $jsontip.empty();//清空内容
  109.         $.each(newdata, function (infoIndex, info) {
  110.             strHtml += `
  111.             <tr>
  112.               <td><b class="roleNum">${infoIndex + 1}</b></td>
  113.               <td>${info["col0"]}</td>
  114.               <td>${info["col3"]}</td>
  115.                       </tr>
  116.           `;
  117.         })
  118.         $jsontip.html(strHtml);//显示处理后的数据


  119.         $.each($('#div3 tr').slice(1, 8), function (i, item) {
  120.             $(item).children('td').eq(0).children('b').css("background-color", "#3590de");
  121.         });

  122.         $.each($('#div3 tr').slice(1, 5), function (i, item) {
  123.             $(item).children('td').eq(1).css("color", "#0002c0");
  124.         });
  125.     })
  126. }

  127. function appendD4() {
  128.     $.getJSON("js/data.json", function (data) {
  129.         var $jsontip = $("#jsonTip4");

  130.         // 排序测试
  131.         function sortByKey(array, key) {
  132.             return array.sort(function (a, b) {
  133.                 var x = a[key];
  134.                 var y = b[key];
  135.                 return ((x > y) ? -1 : ((x < y) ? 1 : 0));
  136.             });
  137.         }


  138.         var newdata = $.extend({}, data.data);
  139.         newdata.rows = [];

  140.         $.each(data.data.rows, function (i, r) {
  141.             var item = {};
  142.             $.each(r.cells, function (j, c) {
  143.                 item["col" + j] = c;
  144.             })
  145.             newdata.rows.push(item);
  146.         })

  147.         newdata = sortByKey(newdata.rows, 'col4');


  148.         // 绘制
  149.         var strHtml = "";//存储数据的变量
  150.         $jsontip.empty();//清空内容
  151.         $.each(newdata, function (infoIndex, info) {
  152.             strHtml += `
  153.             <tr>
  154.               <td><b class="roleNum">${infoIndex + 1}</b></td>
  155.               <td>${info["col0"]}</td>
  156.               <td>${info["col4"]}</td>
  157.                       </tr>
  158.           `;
  159.         })
  160.         $jsontip.html(strHtml);//显示处理后的数据


  161.         $.each($('#div4 tr').slice(1, 9), function (i, item) {
  162.             $(item).children('td').eq(0).children('b').css("background-color", "#3590de");
  163.         });

  164.         $.each($('#div4 tr').slice(1, 6), function (i, item) {
  165.             $(item).children('td').eq(1).css("color", "#0002c0");
  166.         });
  167.     })
  168. }

复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-5 19:25:53 | 显示全部楼层
能给一份json文件,让我看看。主要是测试一下到底要生成什么内容。  
我在python经常写通用性很高的代码。js也想试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-19 11:45:49 | 显示全部楼层
好~~~~~~长.................
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-25 12:24:47 | 显示全部楼层
  1. appendmy(1,11,7);
  2. appendmy(2,5,3);
  3. appendmy(3,8,5);
  4. appendmy(4,9,6);
  5. function appendmy(n,m,k) {
  6.     $.getJSON("js/data.json", function (data) {
  7.         var $jsontip = $("#jsonTip"+n);

  8.         function sortByKey(array, key) {
  9.             return array.sort(function (a, b) {
  10.                 var x = a[key];
  11.                 var y = b[key];
  12.                 return ((x > y) ? -1 : ((x < y) ? 1 : 0));
  13.             });
  14.         }
  15.         var newdata = $.extend({}, data.data);
  16.         newdata.rows = [];

  17.         $.each(data.data.rows, function (i, r) {
  18.             var item = {};
  19.             $.each(r.cells, function (j, c) {
  20.                 item["col" + j] = c;
  21.             })
  22.             newdata.rows.push(item);
  23.         })
  24.         newdata = sortByKey(newdata.rows, 'col'+n);
  25.         // 绘制
  26.         var strHtml = "";//存储数据的变量
  27.         $jsontip.empty();//清空内容
  28.         $.each(newdata, function (infoIndex, info) {
  29.             strHtml +='\
  30.             <tr>\
  31.               <td><b class="roleNum">${infoIndex + 1}</b></td>\
  32.               <td>${info["col0"]}</td>\
  33.               <td>${info["col"+'+n+']}</td></tr>\
  34.             ';
  35.         })
  36.         $jsontip.html(strHtml);//显示处理后的数据
  37.         // 前十个tr中,第一个td中的b,设置背景样式。
  38.         $.each($('#div'+n+'tr').slice(1, m), function (i, item) {
  39.             $(item).children('td').eq(0).children('b').css("background-color", "#3590de");
  40.         });
  41.         $.each($('#div'+n+'tr').slice(1, k), function (i, item) {
  42.             $(item).children('td').eq(1).css("color", "#0002c0");
  43.         });
  44.     })
  45. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-15 14:19:15 | 显示全部楼层
太————————————————————长————————————————————了————————————————————
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-21 20:10:13 | 显示全部楼层
有点长啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-21 08:57:51 | 显示全部楼层
好长。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 14:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表