如何检查数组中是否存在字符串部分

时间:2015-10-16 13:26:20

标签: javascript arrays string

我有如下所示的数组符号

var sourcesymbols = ["ERT", "UBL" , "AMAZING"]; 

我从rss feed

获得以下新闻标题

你的专家很棒

如何检查rssfeedstring中的内容是否存在于 sourcesymbols 数组下?

例如rssfeedstring有惊人字,它也出现在 sourcesymbols

请让我知道如何实现这个目标。

我试图将rssfeedstring转换为大写,然后我不确定如何在字符串上使用indexOf。

rssfeedstring = rssfeedstring.toUpperCase();

请让他们知道是否还有更好的方法,因为数组将有2000个符号

http://jsfiddle.net/955pfz01/3/

2 个答案:

答案 0 :(得分:2)

您可以使用正则表达式。

步骤:

  1. 使用join(正则表达式中的OR)将数组转换为|的字符串 glue
  2. 使用\b - 字边界来匹配确切的字词
  3. 在正则表达式中使用i标志以匹配,无论情况如何。所以,不必改变字符串的情况。
  4. 转义斜杠,因为使用RegExp构造函数需要传递字符串,并且字符串中的\用作转义跟随字符。
  5. 可以在正则表达式上使用
  6. test来检查字符串是否通过了正则表达式。
  7. var sourcesymbols = ["ERT", "UBL", "AMAZING"];
    var mystr = 'you experts are amazing';
    
    var regex = new RegExp("\\b(" + sourcesymbols.join('|') + ")\\b", 'i'); // /\b(ERT|UBL|AMAZING)\b/i
    
    alert(regex.test(mystr));

    您也可以使用some

    1. 使用split \s+将字符串转换为数组。这将把字符串拆分为任何(空格,制表符等)一个或多个空格字符
    2. 在分割数组上使用some
    3. 将字符串转换为大写以进行比较
    4. 使用indexOf
    5. 检查元素是否存在于数组中

      var mystr = 'you experts are amazing';
      var sourcesymbols = ["ERT", "UBL", "AMAZING"];
      
      var present = mystr.toUpperCase().split(/\s+/).some(function(e) {
        return sourcesymbols.indexOf(e) > -1;
      });
      
      alert(present);

答案 1 :(得分:0)

尝试使用Array.prototype.map()Array.prototype.indexOf()返回匹配的文字,sourcesymbols中匹配文字的索引

var sourcesymbols = ["ERT", "UBL" , "AMAZING"]; 

var mystr = 'you experts are amazing';

var res = mystr.split(" ").map(function(val, index) {
  var str = val.toUpperCase(), i = sourcesymbols.indexOf(str);
  return i !== -1 ? [val, i] : null
}).filter(Boolean);

console.log(res)

jsfiddle http://jsfiddle.net/955pfz01/6/