我有10个不同的数组。每个数组都有不同的数字。使用javascript检查某个项目是否在特定数组中
array1 = [1,2,3,4,5]
array2 = [6,7,8,9,10]
...
array 10 = [51,52,53,54]
让我们说我通过7.然后我想知道它是哪个数组,并且想要返回数组编号。所以在这种情况下,它将是2.
我应该为每个阵列写一个switch语句吗?在javascript中欣赏它。
我有10个不同的数组。每个数组都有不同的数字。使用javascript检查某个项目是否在特定数组中
array1 = [1,2,3,4,5]
array2 = [6,7,8,9,10]
...
array 10 = [51,52,53,54]
让我们说我通过7.然后我想知道它是哪个数组,并且想要返回数组编号。所以在这种情况下,它将是2.
我应该为每个阵列写一个switch语句吗?在javascript中欣赏它。
尝试:
var arrays = [array1, array2, ..., array10];
for(var i=0; i<arrays.length; ++i) {
if (arrays[i].indexOf(value) != -1) {
console.log('found in array' + (i+1));
}
}
的一种方式做,这是有数组中的对象和遍历键/值。这种方法不假定数组(以及它们的名字)是按顺序排列的。
注意:这将始终返回一个第一个匹配的函数并终止搜索。
var obj = {
array1: [1, 2, 3, 4, 5],
array2: [6, 7, 8, 9, 10],
array3: [51, 52, 53, 54],
array4: [51, 52, 53, 54, 7]
}
function finder(obj, test) {
var keys = Object.keys(obj);
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
if (obj[key].indexOf(test) > -1) {
return key.match(/\d+/)[0];
}
}
return false;
}
finder(obj, 7); // '2'
如果你想找到一个值的所有实例所有阵列功能需要稍微改变。
function finder(obj, test) {
var keys = Object.keys(obj);
var out = [];
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
if (obj[key].indexOf(test) > -1) {
out.push(key.match(/\d+/)[0]);
}
}
return out;
}
finder(obj, 7); // ['2', '4']
您无法直接检索array.The原因名称是这个变量只存储到对象的引用。
相反,您可以在同一个数组中使用代表其名称的键。然后indexOf
可用于查找包含数字数组,&如果是这样,那么得到的数组名
var array1 = [1,2,3,4,5];
array1.name ="array1";
var array2 = [6,7,8,9,10];
array2.name ="array2";
var array10 = [51,52,53,54]
array10.name ="array10";
var parArray = [array1,array2,array10]
function _getArrayName(number){
for(var o=0;o<parArray.length;o++){
var _tem = parArray[o];
if(parArray[o].indexOf(number) !==-1){
console.log(parArray[o].name);
}
}
}
_getArrayName(6) //prints array2
一个快速的方法应该使用哈希表或如我所愿调用LUT。因此,这项工作归结为以下单一班轮;
var arrs = {
arr1 : [1,2,3,4,5],
arr2 : [6,7,8,9,10],
arr3 : [12,14,16,17],
arr4 : [21,23,24,25,27,20],
arr5 : [31,34,35,39],
arr6 : [45,46,44],
arr7 : [58,59],
arr8 : [66,67,69,61],
arr9 : [72,73,75,79,71],
arr0 : [81,85,98,99,90,80]
},
lut = Object.keys(arrs).reduce((p,c) => {arrs[c].forEach(n => p[n]=c); return p},{}),
findar = n => lut[n];
document.write("<pre>" + findar(12) + "</pre>");
我将所述数据结构改变为只是一个阵列里面其他阵列。 –
可能重复的[对于JavaScript中的每个数组?](http://stackoverflow.com/questions/9329446/for-each-over-an-array-in-javascript) –