为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我在实际想要的东西之后得到一个“未定义”的行?

为什么我在实际想要的东西之后得到一个“未定义”的行?

炎炎设计 2022-08-04 09:53:07
剧透警告:我正在发布HackerRank的“楼梯”问题的解决方案。所以,我试图解决初学者的挑战,用JS打印梯子。我必须编写一个函数,该函数根据作为参数输入的步骤数打印梯子。例如:stairs(4)应该返回   #  ## #######我得到了这个代码,虽然它基本上没问题,但我最终得到了一个“未定义”的行。所以:function staircase(n) {    var stair=[]; /*array of strings */    for (var i=1; i <=n; i++){        var step= " ".repeat(n-i).concat("#".repeat(i));        stair.push(step);    }    for (var i=0; i<=stair.length; i++){        console.log(stair[i])    }}当楼梯 (6) 运行时, 它返回以下内容:     #    ##   ###  #### ###########undefined困扰我的是“未定义”这个词,它阻止我提交slution。我只猜测一个可能的解决方案是替换第二个for循环声明中的“<=”,简单地表示“<”,这就做到了:function staircase(n) {    var stair=[]; /*array of strings */    for (var i=1; i <=n; i++){        var step= " ".repeat(n-i).concat("#".repeat(i));        stair.push(step);    }    for (var i=0; i<stair.length; i++){        console.log(stair[i])    }}当我运行楼梯(6)时,它会返回它应该返回的内容:     #    ##   ###  #### ###########虽然问题解决了,但我不明白为什么。我的问题是:为什么“未定义”一词出现在第一种情况下,为什么我所做的替换修复了它?感谢!
查看完整描述

4 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

给定它的数组将具有 .[1, 2, 3]length3

  • foo[0]1

  • foo[1]2

  • foo[2]3

既然你然后记录哪个是... .3 <= array.lengthfoo[3]undefined


查看完整回答
反对 回复 2022-08-04
?
慕容708150

TA贡献1831条经验 获得超4个赞

当您在 for 循环中使用 i<=n 运行 staircase(6) 时,在上一次迭代中,您正在访问第六个索引处的元素,该元素不存在,因此它是未定义的。数组索引从 0 开始,因此对于 staircase(6),索引最多只能达到 5。


查看完整回答
反对 回复 2022-08-04
?
慕标5832272

TA贡献1966条经验 获得超4个赞

第一个循环从 1 到 n(n 次迭代)运行


for (var i=1; i <=n; i++){

        // statements

}

而第二个循环从 0 到 n(总共 n+1 次迭代)


for (var i=0; i<=stair.length; i++){

        console.log(stair[i])

}

由于楼梯中只有 n 个值,因此在第 n 次 + 1 次迭代中,将返回未定义。


查看完整回答
反对 回复 2022-08-04
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

你应该在数组上运行,直到像这样:stairi < stair.length


function staircase(n) {


  var stair=[]; /*array of strings */


  for (var i=1; i <=n; i++){

      var step= " ".repeat(n-i).concat("#".repeat(i));

      stair.push(step);


  }

  for (var i=0; i<stair.length; i++){

      console.log(stair[i])

  }

}


staircase(6)

根据MDN的说法:


JavaScript 数组的索引为零:数组的第一个元素位于索引 0 处,最后一个元素的索引等于数组的 length 属性值减去 1。


查看完整回答
反对 回复 2022-08-04
  • 4 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号