2016-04-25 52 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>");

相關問題