我的表格如下所示。
有没有办法可以搜索表格以查找某个项目的所有出现(列Cat),然后将下一列(Vol列)中的值添加到数组中,如下例所示+ show 0 if它没有出现在一列中?
注意:每个值只能在列中出现一次。
我的表:
<table id="myTable">
<thead>
<tr>
<th class="myHeader">Cat 1</th>
<th>Vol 1</th>
<th class="myHeader">Cat 2</th>
<th>Vol 2</th>
<th class="myHeader">Cat 3</th>
<th>Vol 3</th>
//...
</tr>
</thead>
<tbody>
<tr>
<td>item1</td><td>8</td><td>item2</td><td>7</td>
</tr>
<tr>
<td>item3</td><td>5</td><td>item2</td><td>7</td>
</tr>
<tr>
<td>item2</td><td>1</td><td>item1</td><td>5</td><td>item3</td><td>3</td>
</tr>
//...
</tbody>
</table>
要求的结果:
var x = [8, 0, 5] // example outcome when searching for "item1"
var y = [7, 7, 1] // example outcome when searching for "item2"
var z = [0, 5, 3] // example outcome when searching for "item3"
非常感谢你提供任何帮助,蒂姆。
答案 0 :(得分:1)
你可以这样做,
var searchTerm = "item1"
var result = $('#myTable td:contains(' + searchTerm + ')').map(function(){
return $(this).next('td').text();
}).get();
console.log(result); //[8, 0, 5]
请阅读以下内容以了解上述代码中发生了什么,
这是编写代码以实现结果的方法:[学分应该转到 Sphinx ]
var searchTerm = "item1";
var result = [];
$('#myTable tbody tr').each(function () {
if ($(this).find('td:contains(' + searchTerm + ')').length === 0)
result.push(0);
else {
result.push(+($(this).find('td:contains(' + searchTerm + ')').next('td').text()));
}
});
alert(result); //[8, 0, 5]