替代jquery .inarray?

cro*_*lum 4 javascript arrays jquery

我喜欢inarray,搜索没有循环的数组,但它只做精确/精确匹配,如果我使用.match,我可以做部分匹配,但这需要一个循环.

有没有办法搜索数组的部分匹配,没有循环?

如果在第1个中找到部分或完全匹配,则有2个数组,1个要搜索,第2个替换文本/值.

目标是以最快的方式搜索阵列以进行部分或完全匹配.

有什么建议?

jAn*_*ndy 10

好吧,.inArray()当然,如果Array.prototype.indexOf()不可用,则在数组上循环:

片段

inArray: function( elem, array ) {
    if ( array.indexOf ) {
        return array.indexOf( elem );
    }

    for ( var i = 0, length = array.length; i < length; i++ ) {
        if ( array[ i ] === elem ) {
            return i;
        }
    }

    return -1;
},
Run Code Online (Sandbox Code Playgroud)

片段

如果您只想知道数组是否包含条目,您可能只想要.join()它并使用String.prototype.indexOf().

这当然不能再返回索引了.所以你需要编写自己的逻辑.可以通过修改上面的代码轻松完成.例如:

Array.prototype.ourIndexOf = function(v) {
    for ( var i = 0, length = this.length; i < length; i++ ) {
       if ( typeof this[i] === 'string' && this[i].indexOf(v) > -1 ) {
            return i;
       }
    }
    return -1;
};

['Foobar', 'baseball', 'test123'].ourIndexOf('base') // === 1
Run Code Online (Sandbox Code Playgroud)