Получить идентификатор строки, которая соответствует регулярному выражению с атрибутом данных - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть функция, которая:

  1. фильтры tr строк
  2. Создает утвержденное регулярное выражение на основе значения, переданного в функцию
  3. Создает массив rtnData, состоящий из того, что, как я считаю, является строкой с атрибутом данных, соответствующим утвержденному регулярному выражению.

Мне нужны только идентификаторы соответствующих строк, а не то, что делает rtnData.

function filterPay(val){
        // target Rows
            $(".loading tr").hide().filter(function() {

        var rtnData = "";
        //make approved regex based on given value
        var payApproved=    new RegExp(val.map(x => x.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')).join('|'), 'i');

           //make rtnData array? consisting of rows that match regex
            rtnData = (
                        $(this).attr("data-payment").match(payApproved)
            );

        return rtnData;

        }).fadeIn("fast");
    }

//I know this refers to the unique Id of each row but don't know how to 
// chain it with the match selection
console.log($(this).attr('data-row'));

Таким образом, вместо того, чтобы показывать строки, можно просто получить идентификаторы и вставить их строку в новый массив, потому что после этого мне нужно сопоставить этот массив с другим массивом фильтра и показать только те строки, в которых совпадают 2 массива идентификаторы.

1 Ответ

0 голосов
/ 05 ноября 2018

Ваш код фильтрует список tr для тех, чье data-payment соответствует регулярному выражению. Теперь вам нужно только сделать map для результатов и извлечь идентификатор.

Также не следует создавать регулярное выражение внутри filter, поскольку оно не зависит от каждого tr

function filterPay(val) {
  var payApproved = new RegExp(val.map(x => x.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')).join('|'), 'i');

  // target Rows
  var rows = $(".loading tr").hide().filter(function() {
      // only use test if the reguar expression does not have the global flag set
      return payApproved.test($(this).attr("data-payment"));
  }).fadeIn("fast");
  var ids = rows.get().map(function(row){return row.id});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...