使用数组对表行进行分组

时间:2018-01-05 05:59:31

标签: javascript arrays

美好的一天, 我有以下数据的样本表

ID  Date         Loc  Time From  Time To
1   01-jan-2018  10   08:15      17:00
1   02-jan-2018  10   08:15      17:00
**1   03-jan-2018  10   08:15      09:00
1   03-jan-2018  20   09:15      11:30
1   03-jan-2018  30   11:45      14:00
1   03-jan-2018  10   14:15      17:00**
1   04-jan-2018  10   08:15      17:00

在此表中,我想将相同日期的记录分组,以便输出如下:

ID  Date         Loc  Time From  Time To
1   01-jan-2018  10   08:15      17:00
1   02-jan-2018  10   08:15      17:00
**1   03-jan-2018  10   08:15      17:00**
1   03-jan-2018  10   08:15      09:00
1   03-jan-2018  20   09:15      11:30
1   03-jan-2018  30   11:45      14:00
1   03-jan-2018  10   14:15      17:00
1   04-jan-2018  10   08:15      17:00

使用以下问题进行分组:

Grouping table rows based on cell value using jquery/javascript

但是为了实现组顶部的摘要行,我使用该方法获取组的第一行进行复制,将其修改为摘要,然后通过两种不同的方法将其添加到组的开头在以下代码中:

for (var id in rowGroups) {
  var group = rowGroups[id];
  // Loop through and add header rows to rowgroups
  if (group.length > 1)
  {
    /*  // Method # 1 using Array assignment
    var rowmain = group.slice(0);
    rowmain.cells[2].innerText = "";
    rowmain.cells[3].innerText = group[0].cells[3].innerText;
    rowmain.cells[4].innerText = group[group.length - 1].cells[4].innerText;
    */

    /*
    var rowmain = $(group)[0];
    $($(rowmain)[0]).find('td')[2].innerText = "";  // Location
    $($(rowmain)[0]).find('td')[3].innerText = group[0].cells[3].innerText;
    $($(rowmain)[0]).find('td')[4].innerText = group[group.length - 1].cells[4].innerText;
    */
    group.unshift(rowmain)
  }

  for (var j = 0; j < group.length; j++) {
    var row = group[j];
    if (group.length > 1 && j == 1) {
      row.className = 'subrow';
    }
    if (group.length > 1 && j == 0) {
      var firstCell = row.cells[0];
      $("<span class='collapsed'>").appendTo(firstCell).click(plusClick);
    }
    table.tBodies[0].appendChild(row);
  }
}

但似乎javascript数组被用作参考,因此在每种情况下,当我选择第一行组(数组元素)并修改副本时,它也会更改原始数据。请帮助如何实现这一目标。

感谢。

0 个答案:

没有答案