例如我有一张表:
head1 head2 head3
x 1 BLA
y 2 BLA
z 3 BLA
我希望能够通过函数 liek SQL 进行分组:
select count(head2) , head3
group by head3
输出会是这样的:
3 BLA
我听说我只能在服务器端执行此操作,但我想在客户端执行此操作。
表格为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>
最佳答案
所以只是为了好玩...
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
,否则你在不必要地循环。
再说一遍,如果数万行数据与您的 UI 相关联,请小心排序。
关于javascript - 在 HTML 中按 Like SQL 查询分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26978087/