查找和计数字符串使用Jquery

时间:2015-06-30 10:00:17

标签: javascript jquery arrays regex

我想使用Jquery在下表中找到II,III,I,D,F和CP的数量。首先,我正在考虑使用正则表达式,但它对我不起作用。我只是一个初学者,这是我到目前为止所尝试过的。

表:

<table>
   <tr>
     <th>Sl</th>
     <th>Name</th>
     <th>status</th>
     <th>position</th>
   </tr>
   <?php while($row= $dbh->fetch(PDO::FETCH_ASSOC)){
   <tr>
     <td><?php echo $row['id'];?></td>
     <td><?php echo $row['nm'];?></td>
     <td class="st"><?php echo $row['st'];?></td>//Regular AND private
     <td class="ps"><?php echo $row['ps'];?></td>//output-CP, I, II, III, D, F
   </tr>
<?php } ?>
</table>

Jquery的:

var ps = $('.ps').text();//output is IIIIIIDIIIICPIIIIIIDIICPIIFIIII
var compt = ps.match(/CP+/g);
$(".inbody").text(compt.length);//This give me the number of CP i.e. 2

我想要这种格式的ps值(IIIIIIDIIIICPIIIIIIDIICPIIFIIII)

II, I,III,D,III,I,CP,III,I,I,I,D,II,CP,II,F,I,III 

所以我可以像下面一样单独计算它们(或者请建议更好的方式):

var arr = ps.split(",");
var cp = $.inArray("CP",arr).length; //will output 2
var Ist = $.inArray("I",arr).length;//will output 6
var Snd = $.inArray("II",arr).length;//will output 3
var Trd = $.inArray("III",arr).length;//will output 4
var Dnt = $.inArray("D",arr).length;//will output 2
var Fld = $.inArray("F",arr).length;//will output 1

所以我的问题是:如何使用jquery从我的表中获取此II, I,III,D,III,I,CP,III,I,I,I,D,II,CP,II,F,I,III格式的数据。我想分别找到常规和私人状态下的CP位置数。请帮帮我。

1 个答案:

答案 0 :(得分:1)

您可以使用jQuery.map

var texts = $.map($('.ps'), function(el) { return $(el).text(); }); 
console.log(texts);

输出:["II", "I", "III", "D", "III", "CP"]

Fiddle

因此,如果您希望拥有基于前一行.st行的数组:

var texts_private = $.map($('td.st:contains("Private") + td'), function (el) {
    return $(el).text();
});
var texts_regular = $.map($('td.st:contains("Regular") + td'), function (el) {
    return $(el).text();
});
console.log(texts_private, texts_regular);

它将抓取.st行,查看:contains()内部的文字,然后查看下一行。

该功能将为您提供两个阵列:

["I", "D", "CP"] ["II", "III", "III"]

Fiddle