根据关键字过滤数组

时间:2020-01-15 14:38:06

标签: javascript arrays filter

我有一个数组:

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)'
];

如何使用上述规则进行过滤?

3 个答案:

答案 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)