如果在Javascript中包含字符串,如何检查数组?

时间:2013-07-12 02:48:47

标签: javascript arrays

我有一个包含字符串的数组。

var js_userBoxName = new Array();

如果字符串中应显示单词“foo”,我想搜索数组的元素。

所以例如我的数组包含单词{foofy,foofa,foo,awtsy},foofy,foofa和foo将会显示,因为它们都包含单词foo。

5 个答案:

答案 0 :(得分:2)

查看Array.filter方法:

var arr = ['foofy', 'foofa', 'foo', 'awtsy'];
var fooItems = arr.filter(function (item) {
    return item.indexOf('foo') >= 0;
});

// Yields ['foofy', 'foofa', 'foo']

链接的MDN页面包含不支持它的浏览器的polyfill。如果您碰巧使用jQuery,可以使用$.grep

var arr = ['foofy', 'foofa', 'foo', 'awtsy'];
var fooItems = $.grep(arr, function (item) {
    return item.indexOf('foo') >= 0;
});

答案 1 :(得分:2)

以下函数应该可以解决这个问题,它只使用标准的acme脚本元素

function Find (myarray, searchterm){
    for (var i=0, len = myarray.length; i<len; i += 1){
         if (typeof(myarray[i]) === 'string' && myarray[i].search(searchterm) !== -1){
             // print or whatever
             //hint use a callback here that you pass in as an additional arugment
         }
    }
}

如果您需要检查更复杂的内容,使用搜索可以使用正则表达式

答案 2 :(得分:2)

你也可以试试这个:

    var myarray = ["foofy", "foofa", "foo", "awtsy"];
    var searched_string = "foo"; 
    var foundmatch = [];

    for(i=0; i < myarray.length; i++){
        if(myarray[i].match(searched_string)){
            foundmatch.push(myarray[i]);
        }
    } 

    alert(foundmatch); 

答案 3 :(得分:1)

注意:良好的性能提示是在迭代时总是缓存数组的长度,而不是为每次循环执行重新计算它。 len = js_userBoxName.length

http://jsperf.com/caching-array-length/4

function () {
    for(var i = 0, len = js_userBoxName.length; i < len; i++){
      if(typeof js_userBoxName[i] === 'string'){
        if(js_userBoxName[i].indexOf('foo') == -1)
          return true;
      }
    }
    return false;
}

答案 4 :(得分:0)

以下内容应该有效:

var myArray = ['foofy', 'foofa', 'foo', 'awtsy'];

for ( var i = 0; i < myArray.length; i++ ) {
  if ( myArray[i].contains('foo') )
    console.log(myArray[i]);
}

打印: foofy foofa FOO

注意:“awtsy”不包含模式foo