javascript - 获取与正则表达式与数据属性匹配的行的 ID

标签 javascript jquery regex filter custom-data-attribute

我有一个函数:

  1. 过滤 tr 行
  2. 根据传递到函数中的值创建经过批准的正则表达式
  3. 创建一个 rtnData 数组,其中包含我认为具有与批准的正则表达式匹配的数据属性的行。

我想要的只是匹配行的 ID,而不是 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'));

因此,除了显示行之外,还可以只获取 id 并将它们的行插入一个新数组中,因为在此之后我必须将该数组与另一个过滤器数组匹配,并且只显示两个数组匹配的行id。

最佳答案

您的代码将 tr 列表过滤为 data- payment 与正则表达式匹配的列表。您现在只需对结果进行映射并提取 ID。

此外,您不应在 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});
}

关于javascript - 获取与正则表达式与数据属性匹配的行的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53157795/

相关文章:

javascript - 使用 moment.Js 比较时间集

javascript - .parents() 在 Angular 中?

javascript - 电话号码正则表达式验证

javascript - 滚动时使元素粘在顶部

objective-c - 使用 NSRegularExpression 将每个匹配项替换为方法的结果

Javascript 继承 : call super-constructor or use prototype chain?

javascript - JQuery 在 show() 函数之前加载图像

jquery - 使用 ASP.NET MVC Jquery Ajax 序列化表单对象和集合

java - 如何只替换部分匹配的子串?

regex - 在 Golang 中使用正则表达式从 URL 中提取子域