Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.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 在多个数组中搜索字符串,然后设置var-jQuery_Javascript_Jquery_Arrays - Fatal编程技术网

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

Javascript 在多个数组中搜索字符串,然后设置var-jQuery,javascript,jquery,arrays,Javascript,Jquery,Arrays,我想根据字符串所在的数组设置一个变量 例如: var primary = ["red", blue", "yellow"]; var secondary = ["orange", "purple", "green"]; 然后检查“purple”并返回它在“secondary”数组中,并将其分配给一个变量以供以后使用 jQuery或Javascript很好。不确定要为变量分配什么,所以我只是使用警报来说明结果 var plen = primary.length; var idx = $.i

我想根据字符串所在的数组设置一个变量

例如:

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

如果有两个以上的数组,这对行有何影响:var idx=$.inArray('purple',arr1.concat(arr2))@ejay:我刚刚更新了一个解决方案,可以处理数量可变的数组。@patrick dw,谢谢。它似乎可以识别数组中的索引,但我没有得到正确的数组标识符(常量数组3)。我的目标是根据字符串所在的数组设置一个var。Object{index=2,array=[3]}@ejay:如果您的意思是返回的对象的
array
属性应该是从中找到结果的数组的基于1的索引号,那么只需更改如下:
ret.array=arrays[i]到这个
ret.array=i+1@patrick dw,这似乎起到了作用。现在有一个愚蠢的问题,我不确定要搜索什么词来学习如何做。。。如何使用返回的对象并删除数组值,然后将其分配给变量?
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 );
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) );