【问题标题】:JavaScript, how to check if part of string is one string in arrayJavaScript,如何检查字符串的一部分是否是数组中的一个字符串
【发布时间】:2019-07-19 03:30:43
【问题描述】:

所以,我有一个带有字符串的数组。现在我想检查一个字符串是否至少包含数组中的这些字符串之一。

{
    "filter" : [
        "ABDC",
        "ADBAC"
    ]
}

var string1 = "ABCD";
var string2 = "ABDC sample";
var string3 = "ADBACABDC";

现在我想要一个函数,它在 string2string3false 上返回 true string1

在 node.js 上实现这一目标的最佳方法是什么?

【问题讨论】:

  • 你能展示你到目前为止所做的事情吗?
  • 一些和包括

标签: javascript arrays node.js string


【解决方案1】:

使用 Array.some 并为每个条目检查字符串 includes 是否过滤:

const data = {
  "filter" : [
      "ABDC",
      "ADBAC"
  ]
}

var string1 = "ABCD";
var string2 = "ABDC sample";
var string3 = "ADBACABDC";

const check = (arr, string) => {
  return arr.some(e => string.includes(e));
}

console.log(check(data.filter, string1));
console.log(check(data.filter, string2));
console.log(check(data.filter, string3));

【讨论】:

    【解决方案2】:

    会是这样的

    function checkString(stringsArray, stringToCheck) {
       return !!stringsArray.find((str) => stringToCheck.indexOf(str) > -1);
    }
    

    然后您需要使用过滤器和要检查的每个字符串调用此函数:

    const filter = [
            "ABDC",
            "ADBAC"
        ];
    
    var string1 = "ABCD";
    var string2 = "ABDC sample";
    var string3 = "ADBACABDC";
    
    checkString(filter, string1);
    checkString(filter, string2);
    checkString(filter, string3);
    

    【讨论】:

      【解决方案3】:

      您可以使用someRegExp

      let filter =["ABDC","ADBAC"]
      
      var string1 = "ABCD";
      var string2 = "ABDC sample";
      var string3 = "ADBACABDC";
      
      let match = (input) =>filter.some(e=>{
          let regEx = new RegExp(e, 'g')
          return regEx.test(input)
      })
      
      console.log(match(string1))
      console.log(match(string2))
      console.log(match(string3))

      【讨论】:

        【解决方案4】:

        试试这个:

        var obj = { "filter" : [ "ABDC", "ADBAC" ]  } ;
        
        function test(str) {
          for ( var i = 0; i < obj["filter"].length; i++ ) {
            patt = new RegExp(obj["filter"][i]) ;
            if ( patt.test(str) ) break;
          }
          console.log(str + " ==> " + patt.test(str) )
        }
        
        test( "ABCD" ) ;
        test( "ABDC sample" ) ;
        test( "ADBACABDC" ) ;

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-01-15
          • 2013-05-12
          • 1970-01-01
          • 2012-09-19
          • 1970-01-01
          • 2019-05-11
          相关资源
          最近更新 更多