javascript - 我可以在 javascript 中拆分预切片的字符串吗?

标签 javascript arrays split slice

您好,我有一个技术测试,要求我将 180 个字符分成 6 组,然后将它们放入 6 个表中。

感谢几天前我来到这里的帮助,我已经拆分了字符,但意识到我需要再次拆分新形成的数组;一旦创建了表格,这 6 个组就将自己登录到 6 个表格中第一个表格的顶行。

我需要这些组成对登录到 9 列 x 3 行的表中,但我似乎无法让它们工作。这是我的代码:

 <script>

 var ticketString ="011722475204365360702637497481233455758302154058881928446789061241507324334876840738576186051132437816395663800818206590104559628214294664710935667287132130687703253151692742547985".match(/.{1,2}/g);

 function loadTickets () {

 var ticket = [];

 for (var i = 0; i < ticketString.length / 15; i++) {

     ticket[i] = ticketString.slice(i * 15, (i + 1) * 15).sort();

     var table = document.createElement("TABLE")

     table.border='1'

     table.setAttribute("id","ticketTable" + i)

     var tableBody = document.createElement("TBODY")

          tableBody.setAttribute("id","ticketBody")

          table.appendChild(tableBody); 

                 for (b=0;b<=2;b++) {

                 var row = document.createElement("TR")

                 row.setAttribute("id", "ticketRow" + b)

                 tableBody.appendChild(row)

                     for (c=0; c<=8;c++) {

                     var cell = document.createElement("TD")

                     cell.setAttribute("id","ticket-number" + c)

                     cell.bgColor = 'red';

                     row.appendChild(cell)

                     document.body.appendChild(table)

                      document.getElementById('ticket-number' + i).innerHTML = ticket[i];


     }

 }

 }

 console.log(tableBody);

 console.log(row);

 console.log(cell);

 };

 </script>

最佳答案

我不确定您是如何确定空框的,但这是 6 个表格,每行 3 行,每行 5 个数字,就像您的图片一样。它主要执行以下操作:

  1. 将字符串分成 18 个数组,每个数组包含 5 个数字。
  2. 创建一个由 #1 中创建的上述数组中的 3 个数组组成的多维数组。
  3. 根据确定数字是否属于该索引的算法检查每个位置。
  4. 为每个外部数组创建一个表,为该表中的每个内部数组创建一行,并为该表中每一行中的每个数字创建一列。

视觉上你可以把它想象成堆叠多维数组。

 var ticketString = "011722475204365360702637497481233455758302154058881928446789061241507324334876840738576186051132437816395663800818206590104559628214294664710935667287132130687703253151692742547985".match(/.{1,2}/g);

 function loadTickets() {
     var ticketTables = [];
     var ticketGroups = [];
     var numberOfNumbers = 5; // per row
     var inc = 0;
     for (var i = 0; i < ticketString.length / numberOfNumbers; i++) {
         var start = i * numberOfNumbers;
         var end = start + numberOfNumbers;
         ticketGroups[i] = ticketString.slice(start, end);

         ticketTables[inc] = ticketTables[inc] || [];
         ticketTables[inc].push(ticketGroups[i]);

         if ((i + 1) % 3 === 0) {
             inc += 1;
         }
     }

     for (var i = 0, max = ticketTables.length; i < max; i += 1) {
         var table = ticketTables[i];
         for (var j = 0, jmax = table.length; j < jmax; j += 1) {
             var row = table[j];
             var newRow = [];
             for (var k = 0, kmax = 9; k < kmax; k += 1) {
                 newRow[k] = '';
                 for (var l = 0, lmax = row.length; l < lmax; l += 1) {
                     var number = parseInt(row[l]);

                     if (number >= (k) * 10 && number < (k + 1) * 10) {
                         newRow[k] = number;
                     }

                     if (number >= (kmax * 10) && k === kmax - 1) {
                         newRow[k] = number
                     }
                 }

             }
             ticketTables[i][j] = newRow;

         }
     }

     console.log(ticketTables);

     for (var i = 0, max = ticketTables.length; i < max; i += 1) {
         var table = ticketTables[i];
         var $table = document.createElement('table');
         for (var j = 0, jmax = ticketTables[i].length; j < jmax; j += 1) {
             var row = table[j];
             var $row = document.createElement('tr');
             $table.appendChild($row);

             for (var k = 0, kmax = row.length; k < kmax; k += 1) {
                 var cell = row[k];
                 var $cell = document.createElement('td');
                 $row.appendChild($cell);
                 $cell.innerHTML = cell;
             }

         }
         document.body.appendChild($table);
     }
 };

 loadTickets();
input {
    width: 100%;
}
table, tr, td {
    border: 1px solid grey;
}
table tr td {
    min-width: 20px;
}

关于javascript - 我可以在 javascript 中拆分预切片的字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33719558/

相关文章:

javascript - 当我在 consol 中打印对象时明确定义时,Javascript 中的键未定义

javascript - 无法连接到 Node js中的websocket

php - HTML:单选按钮数组

arrays - 如何在 Groovy 中合并 2 个 JSON 数组?

string - Haskell 尾部拆分

java - 如何将标点符号从字符串末尾移动到开头?

python - 读取文件并剥离\n并拆分列表

javascript - 使用 JavaScript 定位

java - 比较数组中的 double 值并返回索引号

javascript - Highcharts - 为什么第一列之前和最后一列之后有额外的间距?