在多个数组中搜索字符串,然后设置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) );