繁体   English   中英

无法访问 Javascript 中多维数组的第 n 个元素

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM