这是一个示例标记
<table id="MyTable">
<tr>
<th>Group Name</th>
<th>Object Name</th>
</tr>
<tr class="c1">
<td>Animal</td>
<td>Snake</td>
</tr>
<tr class="c2">
<td>Animal</td>
<td>Dog</td>
</tr>
<tr class="c2">
<td>Place</td>
<td>Antarctica</td>
</tr>
<tr class="c3">
<td>Fruit</td>
<td>Mango</td>
</tr>
</table>
需要做:
查找每个类用于特定“组名”的次数。例如:
动物:{c1 = 1,c2 = 1,c3 = 0}
位置:{c1 = 0,c2 = 1,c3 = 0}
水果:{c1 = 0,c2 = 0,c3 = 1}
我计划用数据创建一个柱形图。
进展:
我能够得到组并找到每个类分别使用的次数(不是按组)。但是,我想不出一种以某种方式合并两者以便获得所需结果的方法。
var numc1=0, numc2=0, numc3=0;
var groupNames = [];
columnTh = $("table th:contains('Group Name')");
columnIndex = columnTh.index() + 1;
$('table tr td:nth-child(' + columnIndex + ')').each(function(){
var groupName = $(this).text()
if(groupNames.indexOf(groupName)=== -1)
{
groupNames.push(groupName); // Gets all the group names
}
switch($(this).closest('tr').attr("class")){ //Gets the number of tr with specified classes.
case "c1": // gets the number of ALL occurances of class values instead of Group
numc1++;
break;
case "c2":
numc2++;
break;
case "c3":
numc3++;
break;
}
});
问题:
根据“组名”获取类的数量。
将所有信息存储在一个对象中。
最佳答案
这里有一些伪代码可以给你一个想法:
create an empty object (results = {})
loop over all `<tr>`
save first column's text to `group`
look up if `group`'s value is already in `results`
if not, add an object named after the value of `group` in `results`, e.g. `results[group] = {}`
save current element's class to `class`
look up if `class`' value is already in `results[group]
if not, add a number field to that object, starting at 1
if yes, increase the number by one
在此之后,您应该拥有一个包含以下内容的对象
results
:{
"Animal" : {"c1" : 1, "c2" : 1}
"Place" : {"c2" : 1}
"Fruit" : {"c3" : 1}
}
关于javascript - 根据类别名称找到在TD中具有特定值的TR的数量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49399258/