JavaScript - 数组 "undefined"错误

标签 javascript arrays loops

我无法理解这段简单的代码。 我没有在控制台中打印整个数组,而是收到消息“10 undefined”。尽管如果我将“var i”设置为 0 或以下,那么一切都很好,我会得到一个从该数字到 10 的完整列表。

当“i”设置为大于 0 的数字时,为什么这不起作用? 用 chrome 拍了一张我的控制台的照片来展示它的样子:

Screenshot

var ar = [];

for (var i = 1; i <= 10; i++) {
    ar.push(i);
    console.log(ar[i]);
}

最佳答案

JavaScript 数组索引从 0 开始,而不是 1。.push() method在数组的末尾添加一个元素,在空数组的情况下(就像你的循环开始时的那样)将是数组元素 0。

您的循环在数组索引 0 处插入值 1,在数组索引 1 处插入值 2,依此类推,直到数组索引 9 处的值 10

您的每个 console.log(ar[i]) 语句都试图从比最高元素索引高一个的索引中记录一个值,并且这些元素将始终为 undefined 。因此控制台记录值 undefined 十次。

您可以像这样记录数组的最后一个元素:

console.log(ar[ar.length-1]);

或者在您(现在)知道 i 将比 .push() 使用的索引高一个的情况下:

console.log(ar[i-1]);

关于JavaScript - 数组 "undefined"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28933486/

相关文章:

javascript - Android、WebView 和 SpeechRecognition-API

ios - 如何将 NSData 对象转换为 UIImage?使用 swift

javascript - CasperJS/PhantomJS .then 在 do/while 循环中不起作用

php - 同一天两次之间以 15 分钟为增量打印时间

Python - Pandas - 导入 Excel 文件,遍历每一行,添加新值,并添加到数据框

javascript - 如何让 ImpressJS 在 IE10 上工作?

javascript - 正则表达式删除每行开头的空格?

javascript - 函数正在警告不正确的值/文本

arrays - 将整个 2D 压缩数组分配给具有相同元素数量的 1D 压缩数组

javascript - 如何将重复的对象键与自己的值分组