分组依据HTML中的SQL查询

时间:2014-11-17 17:13:23

标签: javascript jquery html css razor

我有一张桌子例如:

head1     head2      head3
x         1          BLA
y         2          BLA
z         3          BLA

我希望能够通过函数liek SQL进行分组:

    select count(head2) , head3
    group by head3

输出结果如下:

3          BLA

iv有人告诉我,我只能在服务器端执行此操作,但我想在客户端执行此操作。

表格格式为HTML

<table>
  <thead>
    <tr>
      <th>head1</th>
      <th>head2</th>
      <th>head3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>x</td>
      <td>1</td>
      <td>BLA</td>
    </tr>
    <tr>
      <td>y</td>
      <td>2</td>
      <td>BLA</td>
    </tr>
    <tr>
      <td>z</td>
      <td>3</td>
      <td>BLA</td>
    </tr>
  </tbody>
</table>

2 个答案:

答案 0 :(得分:0)

所以只是为了好玩......

function countByGroup(data, val)
{
    var i, count = 0;
    for (i=0; i<data.length; i++)
    {
        if (val === data[i].head3)
        {
            count++;
        }
    }
    return count;
}

var payload = [
    {
        head1: "x",
        head2: 1,
        head3: "BLA"
    },
    {
        head1: "y",
        head2: 2,
        head3: "BLA"
    },
    {
        head1: "z",
        head2: 3,
        head3: "THER"
    }
];

window.alert(countByGroup(payload, "BLA") + " BLA");
window.alert(countByGroup(payload, "THER") + " THER");

Fiddleige.

没有,很好,类似LINQ或类似于SQL的方式。如果您希望能够更改列名,我们也可以这样做,但是,再次取决于您的数据在客户端上的显示效果

如果您希望每次都知道多个val类型,则您希望编辑该功能,以便一次检查多个count,否则您需要&#39;不必要地重新循环。

而且,如果它依赖于您的用户界面,请务必仔细排序数万行数据。

答案 1 :(得分:0)

OK!

我看了@ruffin的答案,我只是根据自己的情况改了一下:

<table>
  <thead>
    <tr>
      <th>head1</th>
      <th>head2</th>
      <th>head3</th>
    </tr>
  </thead>
  <tbody>
    <tr class="trtest">
      <td>x</td>
      <td>1</td>
      <td>BLA</td>
    </tr>
    <tr class="trtest">
      <td>y</td>
      <td>2</td>
      <td>BLA</td>
    </tr>
    <tr class="trtest">
      <td>z</td>
      <td>3</td>
      <td>THER</td>
    </tr>
  </tbody>
</table>

<script>
var payload = [];

function countByGroup(data, val)
{
    var i, count = 0;
    for (i=0; i<data.length; i++)
    {
        if (val === data[i].head3)
        {
            count++;
        }
    }
    return count;
}


for(i = 0 ; i < document.getElementsByClassName('trtest').length ; i++)
{
    var obj = new Object();
    obj.head1 = document.getElementsByClassName('trtest')[i].getElementsByTagName('td')[0].innerHTML;
    obj.head2 = document.getElementsByClassName('trtest')[i].getElementsByTagName('td')[1].innerHTML;
    obj.head3 = document.getElementsByClassName('trtest')[i].getElementsByTagName('td')[2].innerHTML;
    payload.push(obj)
}

window.alert(countByGroup(payload, "BLA") + " BLA");
window.alert(countByGroup(payload, "THER") + " THER");

</script>

这对我来说非常有用。 谢谢大家!