2017-10-13 3 views
0

J'essaie de parcourir le tableau 'myArr' ci-dessous et de faire correspondre n'importe quel nombre avec numberID vairable. Cependant, je continue à afficher la déclaration d'état dans la console quand je sais qu'il y a une correspondance dans le tableau.Comment trouver un nombre correspondant dans un tableau multidimensionnel?

Existe-t-il un moyen de parcourir le tableau et de faire correspondre les nombres?

De plus, le premier ensemble de nombres est celui que je souhaite apparier. Je veux afficher le deuxième nombre si le premier est apparié.

<script> 
    var numberID = 123456789; 

    var myArr = [ 
    [123456789, 23149232], 
    [87649235, 12355678], 
    [54353122, 76768621], 
    [88907665, 65778448], 
    ]; 

    var ID = numberID; 
    var i = myArr.indexOf(ID); 
    if(i > -1){ 
     console.log('We found a match for the following number ID: ' , myArr[0][0]); 
     console.log('Here is the matching 2nd number: ' , myArr[0][1]); 
    } 
    else { 
     console.log('Did not find a matching number ID'); 
    } 
</script> 
+0

Je vous suggère d'utiliser une "boucle". –

+0

Voulez-vous trouver tous les matchs, ou juste le premier? –

Répondre

0

Le problème est indexOf ne recherche pas les tableaux imbriqués, de sorte que vous devrez vérifier chaque tableau individuel myArr.

Vous pouvez utiliser la fonction findIndex:

var numberID = 123456789; 
 

 
var myArr = [ 
 
    [123456789, 23149232], 
 
    [87649235, 12355678], 
 
    [54353122, 76768621], 
 
    [88907665, 65778448], 
 
]; 
 

 
var index = myArr.findIndex((array) => array[0] === numberID); 
 
console.log(index);

Ou si vous utilisez simplement la fonction find si vous voulez le tableau individuel qui commence par numberID:

var numberID = 123456789; 
 

 
var myArr = [ 
 
    [123456789, 23149232], 
 
    [87649235, 12355678], 
 
    [54353122, 76768621], 
 
    [88907665, 65778448], 
 
]; 
 

 
var row = myArr.find((array) => array[0] === numberID); 
 
console.log(row);

1
arr.find(elt => elt[0] === 123456789)[1] 

En anglais:

arr       // In arr, 
    .find(     // find the 
    elt =>     // element whose 
     elt[0]     // first value 
     ===     // is equal to 
      123456789   // this magic number 
    )       
[1]       // and take its second element 
0

boucle dans votre myArr et il suffit de vérifier le premier indice et la sortie du second indice sur vrai.

var numberID = 123456789; 
 

 
var myArr = [ 
 
    [123456789, 23149232], 
 
    [87649235, 12355678], 
 
    [54353122, 76768621], 
 
    [88907665, 65778448], 
 
    ]; 
 
    
 
myArr.forEach(val => { 
 
    if (val[0] === numberID) { 
 
    console.log(val[1]) 
 
    } 
 
})