2016-04-25 45 views
-2

我有10个不同的数组。每个数组都有不同的数字。使用javascript检查某个项目是否在特定数组中

array1 = [1,2,3,4,5] 
array2 = [6,7,8,9,10] 
... 
array 10 = [51,52,53,54] 

让我们说我通过7.然后我想知道它是哪个数组,并且想要返回数组编号。所以在这种情况下,它将是2.

我应该为每个阵列写一个switch语句吗?在javascript中欣赏它。

+0

我将所述数据结构改变为只是一个阵列里面其他阵列。 –

+0

可能重复的[对于JavaScript中的每个数组?](http://stackoverflow.com/questions/9329446/for-each-over-an-array-in-javascript) –

回答

1

尝试:

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

的一种方式做,这是有数组中的对象和遍历键/值。这种方法不假定数组(以及它们的名字)是按顺序排列的。

注意:这将始终返回一个第一个匹配的函数并终止搜索。

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' 

DEMO

如果你想找到一个值的所有实例所有阵列功能需要稍微改变。

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'] 

DEMO

0

您无法直接检索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 

jsfiddle

+0

您的函数不会“返回“什么...... – Andy

+0

对!这是错误的术语。编辑它 – brk

0

一个快速的方法应该使用哈希表或如我所愿调用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>");

相关问题