我有一个数组:
let array = [
'Hello 1» (Foo_Test-Editable)',
'Hello 2» (Foo_Test-Editable)',
'Hello 3» (Foo_Test)',
'Foo_Test_4'
];
let searchKeyword = 'Foo_Test';
const result = array.filter(f => f.indexOf(searchKeyword) != -1);
console.log(result);
查找规则:
Foo_Test
,不能包含Foo_Test+...
加上一些变体期望的结果是:
let result = [
'Hello 3» (Foo_Test)'
];
如何使用上述规则进行过滤?
答案 0 :(得分:3)
如果您可以将关键字更改为正则表达式...
let array = [
'Hello 1» (Foo_Test-Editable)',
'Hello 2» (Foo_Test-Editable)',
'Hello 3» (Foo_Test)',
'Foo_Test_4'
];
let searchKeyword = /Foo_Test[^-|_]/;
const result = array.filter(f => searchKeyword.test(f));
console.log(result);
答案 1 :(得分:1)
在"Foo_Test"
周围加上括号以区分它。
let srch = "(Foo_Test)"
let arr = [
"Hello 1» (Foo_Test-Editable)",
"Hello 2» (Foo_Test-Editable)",
"Hello 3» (Foo_Test)",
"FooText"
]
let srch = "(Foo_Test)"
const result = arr.filter( f => f.indexOf(srch)!= -1)
console.log(result)
答案 2 :(得分:1)
实际上您的代码在工作,输出为3个数组,因为它们都包含搜索值 Foo_Test
(3) ["Hello 1» (Foo_Test-Editable)", "Hello 2» (Foo_Test-Editable)", "Hello 3» (Foo_Test)"]
因此请在(Foo_Test)周围加上括号以将其与其他字符区分开,这将输出特定值
(Foo_Test)