如何searchstring数组中的string

在其他post中寻找答案后,我觉得我必须问这个。 我看了如何检查数组是否包含JavaScript中的对象? 和最好的方法来查找一个项目是否在JavaScript数组? 并不能让代码在那里工作。

我正在捕获一个HTMLembedded代码到一个数组,所以每个项目是一行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' 

我想search这个数组,find“高度”这个单词的位置。

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

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

与简单的对象search我得到“虚假”的回报。

任何想法?

这和迭代数组并寻找正则expression式一样简单

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

编辑 – 使str作为参数来运作。

扩展您链接到的包含function:

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

然后你用一个string和一个正则expression式来调用函数,在你的情况下查找高度:

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

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

 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 。

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

防爆。

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

避免使用正则expression式会更快,如果您只是想在string值数组中find第一个子string匹配。 你可以添加你自己的数组searchfunction:

代码

 Array.prototype.findFirstSubstring = function(s) { for(var i = 0; i < this.length;i++) { if(this[i].indexOf(s) !== -1) return i; } return -1; }; 

用法

 i.findFirstSubstring('height'); 

返回

如果找不到-1或者第一个子string的数组索引(如果find的话)(在你的情况下是2