如何在数组jQuery中查找字符串的一部分
How to find part of a string in array jQuery
我一直试图在几个字符串数组中找到字符串的一部分,但没有成功:
我有一个阵列1 ['BA11', 'BA14', 'BA15']
和阵列2 ['GL156', 'GL24', 'GL31']
当我只搜索字符串"BA11AB"、"BA15HB"或"GL156DC"的一部分时,我希望它能返回true。
以下是我一直在使用但没有成功的代码:
if($.inArray(userinput, array1) !== -1)
{
alert("Found in Array1!");
}
if($.inArray(userinput, array2) !== -1)
{
alert("Found! in Array2");
}
谢谢Nuno
看到OP改变了原来的问题:http://jsfiddle.net/c4qPX/2/是两者的解决方案(如果我们在搜索关键字或搜索值的数组中进行搜索,则算法没有真正的区别)-关键是要比较什么。
var array1 = ['BA11', 'BA14', 'BA15'];
var array2 = ['GL156', 'GL24', 'GL31'];
var search = 'GL156DC';
$.each([array1, array2], function(index, value){
$.each(value, function(key, cell){
if (search.indexOf(cell) !== -1)
console.log('found in array '+index, cell);
});
});
var found = false;
$.each(array, function(i, val) {
if (val.indexOf(string) >= 0) {
found = true;
return false;
}
});
您可以创建一个简单的函数,并将其添加到Array
原型中(这样就可以在任何数组上调用它),该原型在数组中搜索子字符串匹配项:
JSFIDDLE
Array.prototype.containsSubString = function( text ){
for ( var i = 0; i < this.length; ++i )
{
if ( this[i].toString().indexOf( text ) != -1 )
return i;
}
return -1;
}
然后在你的阵列上使用它:
var array1 = ['12345', '78273', '34784'],
array2 = ['JJJJJ', 'ABCDEF', 'FFDDFF'];
if( array1.containsSubString( 234 ) !== -1)
{
alert("Found in Array1!");
}
if( array2.containsSubString( 'DD' ) !== -1)
{
alert("Found! in Array2");
}
编辑
如果你想找到一个数组是否有一个元素是另一个字符串的子字符串,那么:
JSFIDDLE
Array.prototype.hasSubStringOf = function( text ){
for ( var i = 0; i < this.length; ++i )
{
if ( text.toString().indexOf( this[i].toString() ) != -1 )
return i;
}
return -1;
}
var array3 = [ 'AB11' ];
if( array3.hasSubStringOf( 'AB11HA' ) !== -1)
{
alert("Array3 contains substring");
}
编辑2
只需结合前面的两个功能:
JSFIDDLE
Array.prototype.containsSubStringOrHasSubstringOf = function( text ){
for ( var i = 0; i < this.length; ++i )
{
if ( this[i].toString().indexOf( text.toString() ) != -1
|| text.toString().indexOf( this[i].toString() ) != -1 )
return i;
}
return -1;
}
var testArrays = [
['BA11ABC', 'BAGL156DC14', 'BA15HC'],
['GL156DC', 'GL166DC', 'GL31BA11AB'],
['BA11', 'BA14', 'BA15'],
['GL156', 'GL24', 'GL31']
],
testValues = [ "BA11AB", "BA15HB", "GL156DC" ],
results = [ 'Results:' ];
var test = function( str, arr ){
var i = arr.containsSubStringOrHasSubstringOf( str );
if ( i !== -1 )
results.push( JSON.stringify( arr ) + ' matches ' + str + ' on ' + arr[i] );
else
results.push( JSON.stringify( arr ) + ' does not match ' + str );
};
for ( var i = 0; i < testArrays.length; ++i )
for ( var j = 0; j < testValues.length; ++j )
test( testValues[j], testArrays[i] );
alert( results.join(''n') );
尝试类似的东西
return array1.toString().indexOf(userinput)!=-1;
如果逗号比有问题
return array1.join('|').indexOf(userinput)!=-1;
如果出现任何问题,请使用空间
return array1.join(' ').indexOf(userinput)!=-1;
我不确定你是否熟悉下划线js,但你可以使用这样的东西:
var array = ['JJJJJ', 'ABCDEF', 'FFDDFF'];
var search = "JJJ";
var found = _.some(array, function(value) {
return value.indexOf(search)!=-1;
});
alert(found);
看小提琴。
看到了其他人的答案,我真的很喜欢toString()的答案:array.toString().indexOf(search)!=-1
相关文章:
- 遍历DOM查找字符串有时会正确返回
- 查找字符串及其索引中的最大数字
- 使用正则表达式查找字符串中的不匹配字符
- 如何在日志文件中查找字符串并返回整行
- 使用for循环查找字符串中的特定字符
- 正则表达式查找字符串并返回大括号之间的所有内容
- javascript查找字符串并删除以下所有字符
- 如何在数组jQuery中查找字符串的一部分
- 如何在对象中查找字符串
- 正则表达式,用于查找字符串的所有出现项,然后查找其后面的下一个空格
- 查找字符串中类型的最后一个字符
- 查找字符串中出现的字符数
- 快速查找字符串是否在数组中
- 使用 JQuery.inArray() 查找字符串
- 在 MongoDB 集合中查找字符串
- 用于查找字符串中的值的正则表达式
- 查找字符串的单个匹配项,然后查找另一个模式的多个匹配项
- 查找字符串 jQuery/Javascript 的部分
- 在索引之后查找字符串的第一个索引
- 查找字符串中单词所有实例的位置,在控制台中得到不需要的重复