这个while循环条件如何工作?

时间:2017-12-28 02:52:26

标签: javascript for-loop while-loop

此函数在删除每个其他数字后返回一个数字。例如,在第一次运行时,从左到右 - 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

2 个答案:

答案 0 :(得分:2)

我不知道此功能的实际用途,但我们可以使用您提供的示例数据轻松运行您的功能:

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。

答案 1 :(得分:0)

do{/*statements*/}while(/*condition*/)
do while语句首先执行语句然后检查您的条件是否为真它将再次执行语句如果为false 终止循环

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

while循环首先检查条件是否为真执行语句。在做完陈述之后,如果错误终止循环再次检查条件

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

for循环初始化索引然后检查条件如果为true 执行语句然后增加索引 < strong>检查条件,如果错误终止循环