我要遍历下面的数组:
var a=[1,2,3,4,5,6,0,11]
for(let value of a)
{
console.log(a[value-1])
}
我得到的输出如下。 我找不到为什么0和11被打印为未定义的原因。
1
2
3
4
5
6
undefined
undefined
答案 0 :(得分:5)
我认为这可能是对for...of
的简单误解。
在每次迭代中,您都尝试访问索引为a[value-1]
的项目。您的第一个undefined
来自值0
,您尝试在其中访问a[0-1]
或a[-1]
。第二个来自值11
,您尝试在其中访问a[11-1]
或a[10]
。
您的数组在索引-1
和索引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; }