返回与预期不同的输出的Javascript

返回与预期不同的输出的Javascript,javascript,Javascript,我正在通过CoderByte进行工作,我很难理解为什么输出不是我认为应该的。下面的函数接收一个数组,然后返回该数组是算术序列、几何序列还是完全没有(在这种情况下,返回-1)。然而,无论我传入什么数组(大于1个元素),它都会输出“算术”。对于一个测试用例,我传入[5,10,20],它应该输出“Geometric”,同时传入[1,2,3100],它应该输出-1。我做错了什么 function ArithGeo(arr) { if (arr.length == 1){ return "

我正在通过CoderByte进行工作,我很难理解为什么输出不是我认为应该的。下面的函数接收一个数组,然后返回该数组是算术序列、几何序列还是完全没有(在这种情况下,返回-1)。然而,无论我传入什么数组(大于1个元素),它都会输出“算术”。对于一个测试用例,我传入[5,10,20],它应该输出“Geometric”,同时传入[1,2,3100],它应该输出-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;
  }

}
函数ArithGeo(arr){
如果(arr.length==1){
返回“太短”;
}
var-arrDiff=arr[1]-arr[0];
var geoDiff=arr[1]/arr[0];
var-arr=true;
var geo=真;
var-diff=0;

对于(var i=1;i您在屏蔽变量方面有问题。您的函数将作为参数
arr
,但您还定义了一个名为
arr
的变量

尝试将变量第6行更改为
算术
或类似内容

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;
  }
}
函数ArithGeo(arr){
如果(arr.length==1){
返回“太短”;
}
var-arrDiff=arr[1]-arr[0];
var geoDiff=arr[1]/arr[0];
var arrithmetic=true;
var geo=真;
var-diff=0;

对于(变量i=1;i您正在覆盖您的“arr”变量在第7行变为true。你在混淆你的变量。仔细看看你在用
arr
arrDiff
geo
geoDiff
做什么。还要注意,你没有正确地计算测试的几何差。不真实。谢谢@progym,我甚至没有意识到我使用的是与你相同的名字参数本身。如果您添加答案,我会将其标记为correct/upvote。谢谢您的帮助:)同样感谢@MikeW。我的错误是没有检查变量名。非常感谢这里的帮助。回到绘图板感谢@NuclearHost-这是正确的。此外,在MikeW提出上述建议后,我意识到我犯了另一个愚蠢的错误,将arrDiff/geoDiff设置为false,而不是arr/geo(现在是arithm/geo).我不能再接受7分钟,但我会尽快接受。非常感谢