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

我希望根据字符串存在于哪个数组来设置变量。

例如:

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

示例: 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 ); 

编辑:或使其成为一个可以接受可变数量的数组的函数。

示例: 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) );