[英]Trouble accessing the nth element of a multidimensional array in Javascript
我正在引用以下代码,但在访问多维数组的第 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
问题是,您在第一个循环中返回早期,但您只需要返回找到的值。
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"));
您的if
语句中有 2 行代码,因此您需要将其包装在{}
中。 如果它是单行,则{}
是可选的。
所以要么——
if(intervaldefinitions[i][2] === interval) {
var intervalnumber = intervaldefinitions[i][0];
return intervalnumber;
}
或者
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"]]; function intervalnametonumber(interval) { for(var i=0; i<13;i++) { // console.log(intervaldefinitions[i][2]) 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.