如何搜索字符串数组中的字符串

在其他帖子中寻找答案后,我觉得我必须问这个。 我看了如何检查数组是否包含JavaScript中的对象? 以及如何查找某个项目是否在JavaScript数组中的最佳方法? 并且无法让代码在那里工作。

我将一个html嵌入代码捕获到一个数组中,因此每个项目都是一行html代码。

例如:

i[0]='<param name="bgcolor" value="#FFFFFF" />'
i[1]='<param name="width" value="640" />'
i[2]='<param name="height" value="360" />'   
i[3]='more html code' 

我想搜索这个数组并找到'height'这个单词的那一行。

所以理想情况下,我想编写一个函数,返回出现“height”的项目的索引。

幸运的是,这个数组中没有重复项,所以只有一个出现。

用简单的对象搜索我得到'假'返回。

任何想法?


这与迭代数组并寻找正则表达式一样简单

function searchStringInArray (str, strArray) {
    for (var j=0; j<strArray.length; j++) {
        if (strArray[j].match(str)) return j;
    }
    return -1;
}

编辑 - 使str成为函数的参数。


扩展链接到的包含功能:

containsRegex(a, regex){
  for(var i = 0; i < a.length; i++) {
    if(a[i].search(regex) > -1){
      return i;
    }
  }
  return -1;
}

然后你用一串字符串和一个正则表达式调用函数,在你的情况下查找高度:

containsRegex([ '<param name="bgcolor" value="#FFFFFF" />', 'sdafkdf' ], /height/)

您还可以返回找到高度的索引:

containsRegex(a, regex){
  for(var i = 0; i < a.length; i++) {
    int pos = a[i].search(regex);
    if(pos > -1){
      return [i, pos];
    }
  }
  return null;
}

你可以在javascript中使用Array.prototype.find函数。 数组查找MDN。

所以要找到字符串数组中的字符串,代码变得非常简单。 另外作为浏览器实现,它将提供良好的性能。

防爆。

var strs = ['abc', 'def', 'ghi', 'jkl', 'mno'];
var value = 'abc';
strs.find(
    function(str) {
        return str == value;
    }
);

或者使用lambda表达式,它会变得更短

var strs = ['abc', 'def', 'ghi', 'jkl', 'mno'];
var value = 'abc';
strs.find((str) => str === value);
链接地址: http://www.djcxy.com/p/74949.html

上一篇: How to search for a string inside an array of strings

下一篇: Finding specific objects in array to remove