Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在数组jQuery中查找字符串的一部分_Javascript_Jquery_Html_Arrays_String - Fatal编程技术网

Javascript 如何在数组jQuery中查找字符串的一部分

Javascript 如何在数组jQuery中查找字符串的一部分,javascript,jquery,html,arrays,string,Javascript,Jquery,Html,Arrays,String,我一直在尝试在几个字符串数组中查找字符串的一部分,但没有成功: if($.inArray(userinput, array1) !== -1) { alert("Found in Array1!"); } if($.inArray(userinput, array2) !== -1) { alert("Found! in Array2"); } 我有数组1['BA11','BA

我一直在尝试在几个字符串数组中查找字符串的一部分,但没有成功:

if($.inArray(userinput, array1) !== -1) 
        {
            alert("Found in Array1!");
        }

if($.inArray(userinput, array2) !== -1) 
        {
            alert("Found! in Array2");
        }
我有数组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");
        }
谢谢
努诺

我不确定您是否熟悉,但您可以使用以下内容:

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

试试这样的方法

 return array1.toString().indexOf(userinput)!=-1;
如果逗号的问题大于

 return array1.join('|').indexOf(userinput)!=-1;
如果出现任何问题,请使用空格

return array1.join(' ').indexOf(userinput)!=-1;

您可以创建一个简单函数并将其添加到
数组
原型(以便可以在任何数组上调用该函数),该原型在数组中搜索子字符串匹配:

编辑

如果要查找数组中是否有一个元素是另一个字符串的子字符串,请执行以下操作:

Array.prototype.hasSubStringOf=函数(文本){
对于(变量i=0;i
编辑2

只需将前面的两个功能结合起来:

Array.prototype.containsSubStringOrHasSubstringOf=函数(文本){
对于(变量i=0;i
看到OP改变了他原来的问题:这两个问题都有解决方案(如果我们在搜索键或搜索值的数组中进行搜索,则算法没有真正的区别)-关键是要比较什么

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);
    });
});

循环数组,并对每个字符串使用
indexOf
。可能存在重复项,您不想检查该值是否在数组中。您想检查该值是否在其中一个数组值中。您可以使用JavaScript搜索函数作为一种很好的方法,但如果他搜索
345,7
,它将在数组1中找到。任何
join
方法都将失败,因为我们不知道OPs数据。没错,你可以用魔法字符将它们分开,希望它们不会出现'A'
'A,A'
'A | A'
userinput
可以在数组元素与每个测试的边界之间进行匹配。更新jQuery以在找到字符串时停止尝试哪一个,下划线还是jQuery?还有什么不起作用呢?是的,第二个有效,但我需要它来找到部分结果,比如如果用户输入“BA11HB”,它将返回true,并且它将部分对应于数组中的这个条目:“BA11”。您可以使用
join('separator')
(例如,array1.join('|'))来修复这个问题。第一个解决方案是防弹的(选择正确的分隔符不麻烦)。如果您在扩展原生JS对象时遇到问题:您可以将该函数定义为“普通”函数,并按以下方式调用:
containsSubString.call(array1,“234”)您好,谢谢您的回答。但是,如果用户输入一个值,例如“AB11HB”,并且我在我的数组中有一个条目,我希望它与之匹配,例如“AB11”它将返回false。这不是您在原始帖子中要求的,并且您的示例都不是这样。编辑添加-如果这不符合您的要求,请明确说明您的要求,并提供一组适当的测试数据和通过/失败标准。感谢您的回答,我要求的也是一样。唯一的区别是我想要比较的数据。这就是我遇到问题的地方,因为如果我比较一个大于数组中数据的字符串,它将始终返回false,即使数组中存在部分字符串。工作正常,+1!。在这里,我准备了一些尝试。注意:我已经封装到一个方便的函数中。@Maurice不是string.indexOf(val),因为val总是相同的长度,字符串长度可以是可变的,val可以是字符串的一部分,而不是相反。
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");
}
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");
}
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') );
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);
    });
});