如果查询值或查询值的一部分位于数组中,则返回true

时间:2018-02-12 08:59:03

标签: javascript arrays contains predicate

我有一个包含600多个名字(名字和姓氏)的员工名单。基于此列表,我需要创建一个数组。我还需要一种语法,基于搜索查询,浏览此数组并返回 true false ,如果搜索查询字符串是数组的一部分。搜索查询已在名为 query 的变量中捕获。

示例:

  1. 阵列

    var employee = [ "John Smith", "Bob Hope", "Scott John", "Calum John" ];

  2. 如果查询值或查询值的一部分位于数组 employee 中,则返回 true ,否则返回 false

  3. 示例:

    • 如果查询等于约翰史密斯,请返回 true
    • 如果查询等于 bob ,请返回 true
    • 如果查询等于 SCOTT JOHN FINANCE DEPARTMENT ,则等于 true
    • 如果查询等于健康保险,则等于 false

    基本上,如果搜索查询包含任何名称,请返回 true

    希望这很清楚。 JavaScript不是我的主要内容,所以非常感谢我能得到的所有帮助。

    最佳, 约翰

1 个答案:

答案 0 :(得分:1)

您可以将array#somearray#includes一起使用,方法是将您的查询转换为小写,并将员工姓名转换为小写。

employees.some(employee => employee.toLowerCase().includes(query.toLowerCase()) || query.toLowerCase().includes(employee.toLowerCase()))

var employees = [ "John Smith", "Bob Hope", "Scott John", "Calum John" ],
    queries = ['john smith', 'bob', 'SCOTT JOHN FINANCE DEPARTMENT', 'health insurance'],
    result = queries.map(query => employees.some(employee => employee.toLowerCase().includes(query.toLowerCase()) || query.toLowerCase().includes(employee.toLowerCase())));
console.log(result);