从javascript数组中查找匹配的字符串

时间:2010-06-19 07:14:03

标签: javascript jquery

我有一个字符串数组。我需要找到以键开头的所有字符串。 例如:如果有一个数组['apple','ape','open','soap'] 用键'ap'搜索时 我应该只获得'苹果'和'猿',而不是'肥皂'。

这是javascript。

4 个答案:

答案 0 :(得分:15)

使用indexOf作为@Annie建议。 indexOf用于查找给定字符串中的子字符串。如果没有匹配,则返回-1,否则返回第一个匹配的起始索引。如果该索引为0,则表示匹配位于开头。

另一种方法是使用regular expressions。使用^字符匹配字符串的开头。正则表达式:

/^he/

将匹配以"he"开头的所有字符串,例如“hello”,“hear”,“helium”等.RegExp的test方法返回一个布尔值,指示是否存在是一场成功的比赛。上面的正则表达式可以测试为/^he/.test("helix"),它将返回true,而/^he/.test("sheet")则不会因为"he"没有出现在开头。

循环输入数组中的每个字符串,并收集新数组中匹配的所有字符串(使用indexOf或regex)。那个新数组应该包含你想要的东西。

答案 1 :(得分:10)

function find(key, array) {
  // The variable results needs var in this case (without 'var' a global variable is created)
  var results = [];
  for (var i = 0; i < array.length; i++) {
    if (array[i].indexOf(key) == 0) {
      results.push(array[i]);
    }
  }
  return results;
}

答案 2 :(得分:1)

使用2 改进,可以找到if,不仅包含第一个char,还有第三个参数来定义返回值:true表示只返回数组中的元素数(index) / key),false或任何未接受的值或没有值意味着返回完整的字符串数组[element],如果设置为'position = 3',则返回包含完全位于'after = number'位置的字符串的数组的值,这里3!

function find(key, array, returnindex)
{
var results = [];
if {returnindex.indexOf('position=') == 0}
{
    var a = parseInt(returnindex.replace('position=',''));
    returnindex = false;
}
else if (returnindex != true)
{
    returnindex = false;
}
for (var i = 0; i < array.length; i++)
{
    var j = '-'+array[i].indexOf(key);
    if (typeof a == 'undefined')
    {
        if (i > 0)
        {
            j = 'ok';
        }
    }
    else
    {
        if (i == a+1)
        {
            j = 'ok';
        }
    }
    if (j == 'ok' && returnindex)
    {
        results.push(i);
    }
    else
    {
        results.push(array[i]);
    }
}
return results;
}

答案 3 :(得分:-1)

您可以使用带有正则表达式的过滤器来完成此任务:

&#13;
&#13;
ROW($3:$3)
&#13;
&#13;
&#13;