数组中的唯一值

时间:2016-09-23 14:01:38

标签: javascript jquery arrays object

我需要对从HTML表中提取的数据进行统计。 第一列是gatewayId,第二列是statusId,第三列是gsmError。 我成功过滤了该表并将这些值推送到数组中。

现在我需要从该数组中创建一个唯一网关列表。 我不知道该数组中会包含哪些值,我只知道它们包含在“10”列中。

数组如下所示: [“2951”,“3”,“511”,“2737”,“3”,“502”,“2737”,“3”,“502”,“2732”...]

let messageLogTable = $("#tableId");
    var filteredColData = [];

    messageLogTable.find('tr').each(function(rowIndex, rowData) {
        if(rowIndex > 0){

            $(this).find('td').each(function(colIndex, colData) {

                if(colIndex === 10 || colIndex === 11 || colIndex === 17) {
                    filteredColData.push($.trim(colData.textContent));
                }
            });
        }
    });
    console.log(filteredColData);

结果应该是这样的: 2951,2737,2732

我希望这是使用jQuery完成的,如果可能的话。

谢谢!

2 个答案:

答案 0 :(得分:0)

我会按照以下方式完成这项工作;

logfile.YYYYMMDD_HH

答案 1 :(得分:0)

您可以创建已发现的列表并使用过滤器。

var messageLogTable = $("#tableId");
var filteredColData = [];
var discovered = [];
messageLogTable.find('tr').each(function(rowIndex, rowData) {
    $(this).find('td').each(function(colIndex, colData) {
        if (filteredColData.length > 0) {
            for (var i = 0; i < filteredColData.length; i++) {
                if (filteredColData[i] == $(this).html()) {
                    discovered.push(filteredColData[i]);
                }
            };
        };
        filteredColData.push($(this).html());
    });
});
filteredColData = filteredColData.filter(function(x) {
    return discovered.indexOf(x) < 0
})
alert(JSON.stringify(filteredColData));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table id="tableId">
<tr>
  <td>1</td>
  <td>2</td>
  <td>2</td>
  <td>3</td>
  <td>4</td>
  <td>4</td>
</tr>
</table>