代码之家  ›  专栏  ›  技术社区  ›  StackUnderFlow

如何在多维数组中找到匹配数?

  •  0
  • StackUnderFlow  · 技术社区  · 7 年前

    我试图遍历下面的“myArr”数组,并用numberID vairable匹配任何数字。然而,当我知道数组中有匹配项时,我会一直在控制台中显示else语句。

    有没有办法遍历数组并匹配任何数字?

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

    <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>
    
    3 回复  |  直到 7 年前
        1
  •  1
  •   user663031 user663031    7 年前
    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
    
        2
  •  0
  •   SimpleJ    7 年前

    问题是 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);
        3
  •  0
  •   Christopher Messer    7 年前

    通过你的 myArr 只需检查第一个索引,并将第二个索引输出为true。

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