我想迭代下面的数组:var a=[1,2,3,4,5,6,0,11]for(let value of a){ console.log(a[value-1])}我得到如下输出。我无法找到为什么 0 和 11 被打印为未定义。123456undefinedundefined
1 回答
慕妹3146593
TA贡献1820条经验 获得超9个赞
我想这可能是一个简单的误解for...of。
在每次迭代中,您都试图访问 index 处的项目a[value-1]。您的第一个undefined值来自0您尝试访问的值a[0-1], 或a[-1]。第二个来自 value 11,你试图访问的地方a[11-1],或者a[10]。
您的数组在 index-1和 index处没有项目10,因此它们都是undefined.
我在您的代码中添加了一些日志记录以帮助上述解释:
var a = [1, 2, 3, 4, 5, 6, 0, 11]
for (let value of a) {
console.log(`value is ${value}`);
console.log(`Getting item at a[${value-1}]`);
console.log(`Item is ${a[value - 1]}`);
console.log(`-----`);
}
.as-console-wrapper { max-height: 100vh !important; }
添加回答
举报
0/150
提交
取消