我有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) –