使用JavaScript过滤功能时使用通配符

时间:2016-11-10 03:21:02

标签: javascript json wildcard

我有一个对象数组,我需要在其中进行通配符过滤。 例如,我的对象可能包含以下内容:

var a = [  
   {  
      "type":"metals",
      "SN":"SN0000000000"

   },
   {  
      "type":"wood",
      "SN":"SN0000000001"
   }
];

我对正常标准的过滤功能类似于:

  var filtered = a.filter(function(el) {
      //normal checkbox criteria filter for selectedtype
      if(!(self.serialno)){
        return el.type == self.selectedType
      }
      //wildcard text filtering from textfield
      else{
       return typeof el.SN == self.serialno;
      }
    });

打印结果将类似于:

console.log(filtered);

对于使用复选框条件选择的正常条件过滤器("类型"),我能够返回我选择的条件类型(作为对象数组),但在" SN"在其中调用基于文本的通配符搜索,我无法这样做。

例如,如果我要键入" 00"在我的通配符文本字段中,该函数应该返回一个对象数组,其中" SN / serialNo"包含" 00" (在上面的示例中, var a 中的两个对象。)

PS:

  

self.serialno是从文本框中检索的字符串。

     

el.SN是从过滤函数返回的对象数组。

更新

运行此代码:

console.log(self.serialno.test(el.SN));

给我回复:

enter image description here

1 个答案:

答案 0 :(得分:0)

据我所知,你el.SN是一个字符串,表示一组符合正则表达式的序列号。 如果是这样,您可以使用test函数,该函数旨在针对作为参数传递的正则表达式测试调用字符串。

  var patt = new RegExp(self.serialno);
  if(patt.test(el.SN)){ return el; }
如果self.serialno与正则表达式el.SN

匹配,则

返回true

你说el.SN是javascript过滤器功能的结果。我认为filtered变量包含该函数的结果。

el.SN是传递给用于过滤数组el的函数的参数(a)的属性。