首页 > 解决方案 > 在 Javascript 中访问多维数组的第 n 个元素时遇到问题

问题描述

我正在引用以下代码,但在访问多维数组的第 n 个元素时遇到了困难。请参阅以下代码以获取最小工作示例,当我希望它返回 1 时,最后一个 console.log 返回“未定义”。

var intervaldefinitions = [
    [0,  "Unison", "Unison"],
    [1,  "m2",     "minor second"],
    [2,  "M2",     "Major second"],
    [3,  "m3",     "minor third"],
    [4,  "M3",     "Major third"],
    [5,  "P4",     "Perfect fourth"],
    [6,  "TT",     "Tritone"],
    [7,  "P5",     "Perfect Fifth"],
    [8,  "m6",     "minor sixth"],
    [9,  "M6",     "Major sixth"],
    [10, "m7",     "minor seventh"],
    [11, "M7",     "Major seventh"],
    [12, "Octave", "Octave"]
];

function intervalnametonumber(interval)
{
     var i = 0;
     for(i = 0; i < 13; i++)
     {
         if(intervaldefinitions[i][2] === interval)
              var intervalnumber = intervaldefinitions[i][0];
              return intervalnumber;
     }
}
    
console.log(intervalnametonumber("Unison"))
//Returns 0

console.log(intervalnametonumber("minor second"))
//Returns undefined, whereas I would expect it to return 1

标签: javascriptarraysmultidimensional-array

解决方案


问题是,您在第一个循环中返回早期,但您只需要返回找到的值。

function intervalnametonumber(interval) {
    var i = 0;
    for (i = 0; i < 13; i++) {
        if (intervaldefinitions[i][2] === interval)
            return intervaldefinitions[i][0];
    }
}

var intervaldefinitions = [[0, "Unison", "Unison"], [1, "m2", "minor second"], [2, "M2", "Major second"], [3, "m3", "minor third"], [4, "M3", "Major third"], [5, "P4", "Perfect fourth"], [6, "TT", "Tritone"], [7, "P5", "Perfect Fifth"], [8, "m6", "minor sixth"], [9, "M6", "Major sixth"], [10, "m7", "minor seventh"], [11, "M7", "Major seventh"], [12, "Octave", "Octave"]];

console.log(intervalnametonumber("Unison"));
console.log(intervalnametonumber("minor second"));


推荐阅读