Javascript 基于关键字的过滤器数组

Javascript 基于关键字的过滤器数组,javascript,arrays,filter,Javascript,Arrays,Filter,我有一个数组: let数组=[ '你好1»(Foo_测试-可编辑)', “Hello 2»(Foo_测试-可编辑)”, “你好3(Foo_测试)”, “Foo_Test_4” ]; 让searchKeyword='Foo_Test'; const result=array.filter(f=>f.indexOf(searchKeyword)!=-1); 控制台日志(结果)在“Foo_Test”周围添加括号以区分它 let srch = "(Foo_Test)" 让arr=[ “Hello

我有一个数组:

let数组=[
'你好1»(Foo_测试-可编辑)',
“Hello 2»(Foo_测试-可编辑)”,
“你好3(Foo_测试)”,
“Foo_Test_4”
];
让searchKeyword='Foo_Test';
const result=array.filter(f=>f.indexOf(searchKeyword)!=-1);

控制台日志(结果)
“Foo_Test”
周围添加括号以区分它

let srch = "(Foo_Test)"
让arr=[
“Hello 1»(Foo_测试-可编辑)”,
“Hello 2»(Foo_测试-可编辑)”,
“你好3(Foo_测试)”,
“足部文字”
]
let srch=“(Foo_测试)”
const result=arr.filter(f=>f.indexOf(srch)!=-1)

console.log(result)
实际上您的代码正在工作,输出是3个数组,因为它们都包含搜索值Foo\u Test

(3) ["Hello 1» (Foo_Test-Editable)", "Hello 2» (Foo_Test-Editable)", "Hello 3»  (Foo_Test)"]
因此,在(Foo_Test)周围添加括号以区分它和其他测试,这将输出特定的值

(Foo_Test)

如果您可以将关键字更改为正则表达式

let数组=[
'你好1»(Foo_测试-可编辑)',
“Hello 2»(Foo_测试-可编辑)”,
“你好3(Foo_测试)”,
“Foo_Test_4”
];
让searchKeyword=/Foo_Test[^-||]/;
const result=array.filter(f=>searchKeyword.test(f));

控制台日志(结果)
您正在搜索
Foo\u Test
并且您的代码正常工作,它返回所有三行,因为这三行都包含
Foo\u Test
。现在,你做错了什么,可能是两件事。为了获得所需的输出,您可以搜索更具体的内容,如
(Foo_Test)
,或者修改代码,使其排除(例如)带有
Foo_Test后跟另一个单词的行。你需要精确地定义目标和规则。对不起,我做不到。谢谢你的回复。也许你还有别的建议?对不起,老兄,我不能这么做。谢谢你的回复。也许你还有另一个建议?@Learner你的约束条件是什么?数组项应该只包含
Foo_Test
,而不是
Foo_Test+…
@Learner
Foo_Test
将始终包含前三个字符串,因为它们都有子字符串。谢谢!它起作用了!非常感谢你!你真棒!忍者!超级!:)