2017-10-13 150 views
0

我试图通过下面的'myArr'数组运行并匹配number number vairable的任何数字。但是,当我知道数组中存在匹配时,我一直在控制台中显示其他语句。如何在多维数组中找到匹配的数字?

有没有办法通过数组运行并匹配任何数字?

另外第一个数字集是我想要匹配的。如果第一个匹配,我想显示第二个数字。

<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

我建议你使用一个 “循环”。 – 2017-10-13 16:34:39

+0

你想找到所有的匹配,或只是第一个? – 2017-10-13 16:38:10

回答

0

问题是indexOf不搜索嵌套的数组,所以你必须检查每个单独的阵列中myArr

您可以使用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);

或者,如果你只是使用find功能,如果你想与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] 

英文:

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

遍历您myArr,只是检查第一指数和输出上真正的第二个指数。

var numberID = 123456789; 
 

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