javascript - 访问数组的下一个元素时无法读取未定义的属性
问题描述
我是 javascript 新手,在代码的第 10 行收到以下错误:TypeError: Cannot read property '0' of undefined
var arr = [[1,7], [2,6], [3,5], [4,4], [5,3], [6,2], [7,1]];
console.log("arr[0] = ("+arr[0][0]+","+arr[0][1]+")");
console.log("arr[1] = ("+arr[1][0]+","+arr[1][1]+")");
for (var i in arr)
{
console.log("i = "+i);
if (i<arr.length - 2)
{
console.log(i+" ("+arr[i][0]+","+arr[i][1]+")");
console.log(i+" ("+arr[i+1][0]+","+arr[i+1][1]+")");
}
}
此错误之前的输出是
arr[0] = (1,7)
arr[1] = (2,6)
i = 0
0 (1,7)
所以如果i=0,那么i+1就是1,定义了arr[1][0]。如上面 arr[1][0]=2 所示。我的错误是什么?
解决方案
如果你运行下面的代码片段,你可以看到类型i
是字符串
var arr = [[1,7], [2,6], [3,5], [4,4], [5,3], [6,2], [7,1]];
for (var i in arr)
{
console.log(typeof i); // string
}
如果i
是字符串并且 i = "0",则 i + 1 不是 1,而是 "01"。并且arr["01"]
是未定义的,所以你有错误。
我建议这个版本,我使用旧语法
var arr = [[1,7], [2,6], [3,5], [4,4], [5,3], [6,2], [7,1]];
for (var i = 0; i < arr.length; i = i + 1)
{
console.log("i = "+i);
if (i<arr.length - 2)
{
console.log(i+" ("+arr[i][0]+","+arr[i][1]+")");
console.log(i+" ("+arr[i+1][0]+","+arr[i+1][1]+")");
}
}
推荐阅读
- python - 如何在不违反 Liskov 替换的情况下扩展 Python 中的列表数据结构 - 提供属性而不是实例?
- azure - 使用用户名/密码生成不记名令牌以访问 API 端点的可能解决方案
- regex - 使用正则表达式查找方程的截距
- python - 使用 Pandas 和 XLSXWriter 在 Excel 工作表中创建表格
- teamcity - 分支规范问题(构建是在分支 XXX 中触发的,它与构建 VCS 根监控的任何分支都不对应)
- javascript - Angular - 类型“{}”缺少类型“任何 []”中的以下属性
- python-3.x - Unable to joint two geopandas data framesm due to 'rtree' error
- r - R:绘制条形图
- docker - Cannot access to secrets .net core with Docker
- oracle - Oracle GoldenGate dblogin failed with GGSIC : no OCI environment handle created