【问题标题】:How does this while loop condition work?这个while循环条件是如何工作的?
【发布时间】:2017-12-28 02:52:26
【问题描述】:

此函数在删除所有其他数字后返回一个数字。例如,在第一次运行时,从左到右 - 3、7 和 9 被删除。然后循环从右到左进行下一次迭代,直到最后只剩下 8 个。

我不明白为什么只有一个元素(数字)被推送到数组中。这个while循环是如何工作的? “过滤”到底发生在哪里?此外, .reverse 功能让我失望。这段代码怎么知道如何从左到右,然后从右到左多次?

是的,任何帮助将不胜感激;-) 谢谢

function everyOtherfilter(values){
while (values.length > 1){

    new_values = [];
    for (var i=1; i < values.length; i = i+2){
        new_values.push(values[i]);

    }
    values = new_values.reverse();
}

return values[0]

}
(everyOtherFilter([3, 5, 7, 8, 9, 2])) = 8

【问题讨论】:

  • 为什么这么仇恨?蒂姆把我赶走了。谢谢你;-)

标签: javascript for-loop while-loop


【解决方案1】:

我不知道这个函数的实际用途是什么,但我们可以使用您提供的示例数据轻松运行您的函数:

3 5 7 8 9 2
  ^   ^   ^    (i = 1, 3, 5)

将选定的值(上面突出显示)推入new_values 后,我们剩下以下数组:

5 8 2

现在values 被分配到这个数组的反面:

2 8 5
  ^            (i = 1)

在外部while 循环的下一次迭代中,只有一个元素被推入new_values,这是索引1 处的值,数字8,也恰好是数组的中心。所以在第二次迭代结束时,values 数组只有一个元素:

8

while 循环不会再次迭代,因为此时长度仅为 1。

【讨论】:

    【解决方案2】:
    do{/*statements*/}while(/*condition*/)
    

    do while 语句是先执行语句然后检查条件是否为真它将再次执行语句如果为假终止循环.

    while(/*conditions*/){/*statements*/}
    

    while 循环首先检查条件是否为真 执行语句。执行完语句后,它将再次检查条件如果为假终止循环

       for(/*initialize some index*/;/*condition*/;/*index changes*/){/*statements*/}
    

    for循环初始化索引然后检查条件如果为真执行语句然后增加索引 如果为 false 则检查条件终止循环

    【讨论】:

      猜你喜欢
      • 2015-12-27
      • 1970-01-01
      • 2016-09-27
      • 1970-01-01
      • 2023-03-26
      • 2016-10-27
      • 2015-02-03
      • 2021-12-26
      • 1970-01-01
      相关资源
      最近更新 更多