我有一张桌子例如:
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>
答案 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");
没有,很好,类似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>
这对我来说非常有用。 谢谢大家!