我有一个字符串数组。我需要找到以键开头的所有字符串。
例如:如果有一个数组['apple','ape','open','soap']
用键'ap'搜索时
我应该只获得'苹果'和'猿',而不是'肥皂'。
这是javascript。
答案 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)
您可以使用带有正则表达式的过滤器来完成此任务:
ROW($3:$3)
&#13;