Javascript返回的输出不同于预期

时间:2014-06-20 02:25:41

标签: javascript

我正在通过CoderByte工作,我很难理解为什么输出不是我认为应该的。下面的函数接受一个数组,然后返回该数组是算术序列,几何序列还是根本没有(在这种情况下,返回-1)。但是,无论我传入哪个数组(大于1个元素),它都会输出"算术"。对于一个测试用例,我传入:[5,10,20]应输出" Geometric",以及[1,2,3,100],它应输出-1。我做错了什么?

 function ArithGeo(arr) { 
  if (arr.length == 1){
    return "too short";
  }
  var arrDiff=arr[1]-arr[0];
  var geoDiff=arr[1]/arr[0];
  var arr=true;
  var geo=true;
  var diff=0;
  for (var i=1; i<arr.length;i++){
    diff = arr[i+1]-arr[i];
    if(diff != arrDiff){
      arrDiff=false;
    }
    if (diff != geoDiff){
      geoDiff=false;
    }
  }
  if (arr == true){
    return "Arithmetic";
  } else if (geo == true){
    return "Geometric";
  } else {
    return -1;
  }

}

1 个答案:

答案 0 :(得分:1)

屏蔽变量时遇到问题。您的函数作为参数arr,但您还定义了一个名为arr的变量。

尝试将变量行6更改为arithmetic或类似的

function ArithGeo(arr) { 
  if (arr.length == 1){
    return "too short";
  }
  var arrDiff=arr[1]-arr[0];
  var geoDiff=arr[1]/arr[0];
  var arrithmetic=true;
  var geo=true;
  var diff=0;
  for (var i=1; i<arr.length;i++){
    diff = arr[i+1]-arr[i];
    if(diff != arrDiff){
      arrDiff=false;
    }
    if (diff != geoDiff){
      geoDiff=false;
    }
  }
  if (arrithmetic == true){
    return "Arithmetic";
  } else if (geo == true){
    return "Geometric";
  } else {
    return -1;
  }
}