【问题标题】:How do I remove "undefined" from the first iteration in my for loop of an array?如何从数组的 for 循环的第一次迭代中删除“未定义”?
【发布时间】:2019-04-30 22:13:41
【问题描述】:

只要 index 大于等于 0,就迭代 console.log()。 但是,当我运行这段代码时,我总是以 undefined 结尾。如何编写代码以防止这种情况发生?

let array = ["Fiji", "Santorini", "Bora Bora", "Vancouver"];
let arrayLength = array.length;

for(let index = arrayLength; index => 0; index = index - 1)
{
    console.log(array[index]);
}

这解决了它:


让 arrayLength = array.length - 1

索引 => 0;

【问题讨论】:

  • index >= 0 不是index => 0
  • 我真的想知道是否有人在语言委员会会议上指出了这个确切的混淆点的可能性。
  • @Pointy 我不确定你是在侮辱我还是在教育我。
  • 我仍然需要删除“未定义”的第一次迭代。有什么想法吗?
  • 啊,好吧:) 公平地说,我应该知道的。 CodeAcademy 几天前向我展示了这一点。我只是忘记了。无论如何,谢谢!

标签: javascript loops for-loop


【解决方案1】:

正如@Pointy 评论的那样,“大于等于”运算符是>= 而不是=>。您还应该从 let index = arrayLength-1 开始,因为 Javascript 从 0 开始计数,因此最后一项的索引比数组的长度小一。这应该可以正常运行:

let array = ["Fiji", "Santorini", "Bora Bora", "Vancouver"];
let arrayLength = array.length;

for(let index = arrayLength-1; index >= 0; index = index - 1)
{
    console.log(array[index]);
}

【讨论】:

  • 其实。我的理解是我们添加 array.length - 1 的原因是因为 xxxx.length 方法返回一个比实际长度大 +1 的整数。它在 MDN 文档中是这样说的。这里:[链接]developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • 无论如何。我在你回复之前就修好了,但还是谢谢你:))
  • xxxx.length method returns an integer that is +1 greater than the actual length no ... xxxx.length 完全等于 xxxx 的长度-该文档中没有任何内容表明将 1 添加到实际长度 ...它指出 numerically greater than the highest index ...并且由于数组索引从0 开始...具有 1 个元素的数组的最大索引为 0,长度为 1
  • 这是正确答案 - 对>= 运算符的简单误解。此外,它在控制台中显示undefined 的事实是无关紧要的。这只是执行代码时的返回值。
猜你喜欢
  • 1970-01-01
  • 2010-12-28
  • 1970-01-01
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-22
  • 1970-01-01
相关资源
最近更新 更多