JavaScript访问数组元素返回undefined,如何正确获取目标值?
问题原因
你定义数组的语法存在错误:科目名称数组和分数数组之间没有加逗号分隔,JavaScript会将后续的方括号识别为数组索引访问操作,而非数组元素声明:
- 例如
['Español'][89,76,90,87]这段代码中,方括号内的逗号是逗号运算符,会返回最后一个值87作为索引,去取前面只有1个元素的数组,结果自然是undefined - 最终你定义的
datos数组每一项的结构都是[ [undefined] ],不存在你预期的第二层索引1、第三层索引3,所以访问返回undefined
修复方案
你需要在科目数组和分数数组之间添加逗号,把每个子项改为由两个元素组成的二维数组结构,修改后的代码如下:
var datos = [ [['Español'], [89,76,90,87]], [['Desarrollo Web'], [94,91,90,96]], [['Matemática'], [79,83,84,82]], [['Inglés'], [87,89,93,92]], [['Programación'], [75,73,77,71]], [['Seguridad Informática'], [79,83,92,85]], [['Análisis de datos'], [72,71,75,73]], [['Inteligencia Artificial'], [80,83,80,81]], [['Desarrollo de Video Juegos'], [88,92,94,93]], [['Desarrollo de aplicaciones'], [92,95,96,94]] ]; console.log(datos[2][1][3]); // 输出结果为82
另外有两个可优化的点:
- 原代码的科目名存在拼写笔误:
Matemáitca应为Matemática,Ineligencia Artificial应为Inteligencia Artificial - 科目不需要额外套一层数组,可以直接写成
['Español', [89,76,90,87]],后续访问逻辑不变,结构更简洁
内容的提问来源于stack exchange,提问作者Manasés Lovera
相关产品推荐
相关产品推荐

