如何确定数组是否包含某个字符串?

时间:2021-07-24 07:57:06

标签: javascript arrays string

我的数组中有以下项目:

var mystring;
var myname = "Level 1-1";
var myarray = [
    "My Level 1-11 Ticket",
    "My Level 1-1 Ticket",
    "My Level 10-1 Ticket",
    "My Level 10-11 Ticket"
];

 for (var i = 0; i <= myarray.Count - 1; i++) {
     if (myname == ) {
         mystring = myarray[i];
         break;
     }
 }

现在,我想知道数组中是否有包含字符串“Level 1-1”的项目。但是我只想返回正好包含“Level 1-1”的字符串,我不想返回类似“Level 1-11”这样的字符串。

myarray 中的字符串将只有以下值:Level 1-1、Level 1-2、Level 1-10、Level 1-11、Level 10-1、Level 10-11。

myarray 中的字符串永远不会有这样的值:Level 1、Level 1-、Level -1、Level -1-1。

我怎样才能只返回正好包含“Level 1-1”的myarray项?

2 个答案:

答案 0 :(得分:1)

您可以为此使用正则表达式,

let arr = ["My Level 1-11 Ticket",
"My Level 1-1 Ticket",
"My Level 10-1 Ticket",
"My Level 10-11 Ticket"];

let inputStr = "Level 1-1";

let result = arr.find(e => e.match(RegExp(`\\b${inputStr}\\b`)));

console.log(result);

或者如果你的字符串可以出现在开头或结尾或中间,你可以使用这个

    let arr = ["My Level 1-11 Ticket",
        "My Level 1-1 Ticket",
        "My Level 10-1 Ticket",
        "My Level 10-11 Ticket",
        "Level 11-11 Ticket",
        "My Level 12-11"];

        let inputStr = "Level 11-11";

        let result = arr.find(e => e.match(RegExp(`([^\\w]|^)${inputStr}([^\\w]|$)`)));

        console.log(result);

答案 1 :(得分:0)

在这种情况下使用正则表达式会更有用。

<块引用>

正则表达式中,^用于匹配开始,$用于匹配结束,\s用于匹配空格(换行符,制表符,空格)等)。

function getTheExactStrings(myarray, myname) {
    // Write a regular expression as per your need to match the substrings
    const regex = new RegExp(`.*(\\s+|^)${myname}(\\s+|$).*`);

    // Iterate over array items and try to return true/false using `test() method`
    return myarray.filter((name) => {
        return regex.test(name);
    });
}

// start
var mystring;
var myname = "Level 1-1";
var myarray = [
    "My Level 1-11 Ticket",
    "My Level 1-1 Ticket",
    "My Level 10-1 Ticket",
    "My Level 10-11 Ticket",
];

// Call the function to get result
console.log(getTheExactStrings(myarray, myname)); // [ 'My Level 1-1 Ticket' ]
  

我认为,这应该可以解决您的问题。您可以对上述代码进行更改以满足您的需要。我建议你写一个函数,可以用不同的不同数组来测试它。

参考资料

如果您想了解 Javascript 的正则表达式,请查看以下文档。