使用 JavaScript 过滤函数时使用通配符
Using wildcards while using JavaScript filter function
我有一个对象数组,我需要在其中进行通配符过滤。
例如,我的对象可能包含如下内容:
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);
对于我在其中使用复选框条件选择的普通条件过滤器 ("type"),我能够取回我选择的条件类型(作为对象数组),但在"SN" 其中调用了基于文本的通配符搜索,我无法这样做。
例如,如果我在我的通配符文本字段中键入“00”,该函数应该return一个对象数组,其中"SN/serialNo" 包含“00”(在上面的示例中,var a 中的两个对象)。
PS:
self.serialno is a string that is retrieved from the textbox.
el.SN is the array of objects returned from the filter function.
更新:
运行 此代码:
console.log(self.serialno.test(el.SN));
return是我:
据我了解你的问题你el.SN
是一个代表一组符合正则表达式的序列号的字符串。
如果是这样,您可以使用 test
函数,该函数旨在针对作为参数传递的正则表达式测试调用字符串。
var patt = new RegExp(self.serialno);
if(patt.test(el.SN)){ return el; }
returns 如果 self.serialno
与正则表达式 el.SN
匹配则为真
你说el.SN
是javascript过滤函数的结果。但是我认为 filtered
变量包含该函数的结果。
el.SN
是传递给用于过滤数组 a
.
的函数的参数 (el
) 的 属性
我有一个对象数组,我需要在其中进行通配符过滤。 例如,我的对象可能包含如下内容:
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);
对于我在其中使用复选框条件选择的普通条件过滤器 ("type"),我能够取回我选择的条件类型(作为对象数组),但在"SN" 其中调用了基于文本的通配符搜索,我无法这样做。
例如,如果我在我的通配符文本字段中键入“00”,该函数应该return一个对象数组,其中"SN/serialNo" 包含“00”(在上面的示例中,var a 中的两个对象)。
PS:
self.serialno is a string that is retrieved from the textbox.
el.SN is the array of objects returned from the filter function.
更新:
运行 此代码:
console.log(self.serialno.test(el.SN));
return是我:
据我了解你的问题你el.SN
是一个代表一组符合正则表达式的序列号的字符串。
如果是这样,您可以使用 test
函数,该函数旨在针对作为参数传递的正则表达式测试调用字符串。
var patt = new RegExp(self.serialno);
if(patt.test(el.SN)){ return el; }
returns 如果 self.serialno
与正则表达式 el.SN
你说el.SN
是javascript过滤函数的结果。但是我认为 filtered
变量包含该函数的结果。
el.SN
是传递给用于过滤数组 a
.
el
) 的 属性