while if语句的循环不起作用

时间:2014-06-30 08:27:55

标签: javascript arrays

我正在解决一些coderbyte.com挑战,我遇到了一些问题。这是任务:

  

使用JavaScript语言,让函数ArithGeo(arr)获取存储在arr中的数字数组,如果序列遵循算术模式则返回字符串“Arithmetic”,如果遵循,则返回“Geometric”几何图案。如果序列不遵循任何一种模式,则返回-1。

     

算术序列是每个数字之间的差异是一致的,其中在几何序列中,第一个之后的每个术语乘以某个常数或公共比率。算术示例:[2,4,6,8]和几何示例:[2,6,18,54]。

     

可以输入负数作为参数,不输入0,并且没有数组将包含所有相同的元素。

function ArithGeo(arr) { 
      var x = 0;
      var s = 0;
      var allObjects = [];
      for(var i=0; i<arr.length;i++) {
        while(x<arr.length-1) {
          var diff = arr[x+1]-arr[x];
          allObjects.push(diff);
          x++;
        }

       while(s<allObjects.length) {
          console.log(allObjects.length);

          if(allObjects[s]===allObjects[s+1]) {
            console.log('entered if');
            return "Arithmetic";
            s++;

          }
          else if(allObjects[s+1]%allObjects[s]===0) {
            return "Geometric";
            s++;
          }
          else {
            return "-1";
            s++;
          }
         }



      }

    }

    // keep this function call here 
    // to see how to enter arguments in JavaScript scroll down
    ArithGeo([1,2,3,100]);    

它只进入第一个if语句一次,它应该为allObjects数组中的每个元素输入3次。你能告诉我为什么会这样吗?

1 个答案:

答案 0 :(得分:4)

问题是return打破了函数执行,之后没有执行任何其他操作。

var f = function () {
    these();
    things = will + be * 3;
    executed();
    return 4;
    while(anything) {
        after++;
        a = "return statement";
        won = 't';
    }
};
f();

狂野猜测:也许continue会帮助你(跳到下一次迭代)