在多个数组中搜索字符串,然后设置 var - jQuery

2024-05-15

我正在寻找基于字符串存在于哪个数组中设置一个变量。

例如:

var primary   = ["red", blue", "yellow"];
var secondary = ["orange", "purple", "green"];

然后检查“purple”并返回它在“secondary”数组中,并将其分配给一个变量以供稍后使用。

jQuery 或 Javascript 都可以。


不确定您想分配给变量什么,所以我只是使用警报来说明结果

var plen = primary.length;

var idx = $.inArray( 'purple', primary.concat( secondary ) );

if( idx === -1 ) {
    alert( 'not found' );
} else if( idx < plen ) {
    alert( idx + ' in primary' );
} else {
    alert( (idx - plen) + ' in secondary' );
}

Example: http://jsfiddle.net/S9WL6/ http://jsfiddle.net/S9WL6/


然后你可以将其变成可重用的函数:

function inArrays( val, arr1, arr2 ) {
    var len1 = arr1.length;

    var idx = $.inArray( val, arr1.concat( arr2 ) );

    var ret = {index:idx,array:null};

    if( idx > -1 ) {
        if( idx < len1 ) {
            ret.array = arr1;
        } else {
            ret.array = arr2;
            ret.index -= len1;
        }
    }
    return ret;
}

inArrays( 'purple', primary, secondary );

EDIT:或者将其变成一个可以接受可变数量数组的函数。

Example: http://jsfiddle.net/5pZUQ/ http://jsfiddle.net/5pZUQ/

var first = ["red", "blue", "yellow"];
var second = ["orange", "purple", "green"];
var third = ["brown", "black", "white"];

function inArrays(val) {
    var arrays = Array.prototype.slice.call(arguments, 1);

    var len = 0;
    var i = 0;

    var idx = $.inArray(val, [].concat.apply([], arrays));

    var ret = {
        index: idx,
        array: null
    };

    if (idx > -1) {
        do {
            ret.array = arrays[i];
            ret.index = idx - len;
            len += arrays[i].length;
            i++;
        } while (idx >= len)       
    }
    return ret;
}

console.log( inArrays('white', first, second, third) );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在多个数组中搜索字符串,然后设置 var - jQuery 的相关文章

随机推荐