有没有一种方法可以使用jQuery / JS创建一个包含表中所有唯一值的数组,即没有重复?
此外,我感兴趣的值仅在具有特定类别(myClass
)的TD中+我想排除""和" "作为无效值。
在下面的示例中,输出应为[item1,item2,item3]
,作为唯一唯一且有效的值。
示例表
<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 class="myClass">item1</td><td>8</td><td class="myClass">item2</td><td>7</td><td class="myClass">item1</td><td>2</td>
</tr>
<tr>
<td class="myClass">item3</td><td>5</td><td class="myClass">item2</td><td>7</td><td class="myClass">item2</td><td>4</td>
</tr>
<tr>
<td class="myClass">item3</td><td>1</td><td class="myClass">item1</td><td>5</td><td class="myClass">item3</td><td>3</td>
</tr>
//...
</tbody>
</table>
到目前为止我的JS(不包括重复项):
var result = new Array();
$('td').each(function() {
if( ($(this).text() != '') && ($(this).text() != ' ') {
result.push(+($(this).text()));
}
});
alert(result);
提前非常感谢,蒂姆。
答案 0 :(得分:2)
试试这个
var result = new Array();
$('td').each(function() {
if( ($(this).text() != '') && ($(this).text() != ' ') {
if(result.indexOf($(this).text()) == -1){
result.push(+($(this).text()));
}
}
});
alert(result);
答案 1 :(得分:2)
您可以在以下后使用$.unique()
:
result = $.unique(result);
或事先检查:
if(result.indexOf(this.textContent) == -1){
//push
}
答案 2 :(得分:0)
你可以这样做:
var result = new Array();
$('#myTable').find('td.myClass').each(function () {
if (result.indexOf($(this).text()) == -1) {
result.push($.trim($(this).text()));
}
});
console.log(result);
使用$.inArray()
:
var result = [];
$('#myTable').find('td.myClass').each(function () {
if ($.inArray($(this).text(), result) == -1) {
result.push($.trim($(this).text()));
}
});
console.log(result);