为什么Javascript';每';函数返回false?

为什么Javascript';每';函数返回false?,javascript,Javascript,我有一个快速的问题,为什么我的函数返回false,而我期望它返回true。我已经查看了Array.prototype.every的文档,但似乎仍然找不到它。提前谢谢你的帮助 在某些情况下,这是一个名为arithGeo的coderbyte问题的一部分。如果每个元素之间的差异相同,那么我正在处理的当前函数应该返回true。在这里,我希望返回true,因为每个元素与下一个元素相距5 这是我的功能 var arr = [5, 10, 15]; function isArith(arr){ var

我有一个快速的问题,为什么我的函数返回false,而我期望它返回true。我已经查看了Array.prototype.every的文档,但似乎仍然找不到它。提前谢谢你的帮助

在某些情况下,这是一个名为arithGeo的coderbyte问题的一部分。如果每个元素之间的差异相同,那么我正在处理的当前函数应该返回true。在这里,我希望返回true,因为每个元素与下一个元素相距5

这是我的功能

var arr = [5, 10, 15];
function isArith(arr){
    var diff = arr[1] - arr[0];
    return arr.every(function(val, ind, col){
      // if statement checks to make sure I stay in bounds.
      if(col[ind + 1] !== undefined){
         var next = col[ind + 1] - val;
         console.log(diff === next   );
         // logging shows the following statement to be true, for every iteration
         return diff === next; 
      }
    });
}


var arith = isArith(arr);
console.log('arith: ', arith) // logs false

在上一次迭代中,您将返回
undefined
,这将被解释为
false
。代码之所以这样做,是因为如果
if
失败(它在最后一个元素上失败),则没有
return
语句。如果您在
之后添加
返回true
,如果
它应该可以工作。

在上一次迭代中,您将返回
未定义的
,这将被解释为
false
。代码之所以这样做,是因为如果
if
失败(它在最后一个元素上失败),则没有
return
语句。如果在
之后添加
返回true
,如果
它应该起作用。

当到达最后一个元素时,测试是否有下一个元素,这样就不会将最后一个元素与零进行比较。太好了。但是在这种情况下,您忘记了
返回
任何内容,默认的
返回
未定义的
,这是错误的。只需输入
,否则返回true

当您到达最后一个元素时,您可以测试是否存在下一个元素,这样您就不会将最后一个元素与零进行比较。太好了。但是在这种情况下,您忘记了
返回
任何内容,默认的
返回
未定义的
,这是错误的。只需输入
否则返回true

除非某个中间值未定义或数组稀疏。除非某个中间值未定义或数组稀疏。如果(ind
则更好的测试可能是
,因此您测试的最后一个成员是第二个和最后一个成员。你必须容纳稀疏数组吗?不,我不必容纳稀疏数组。我认为你的建议比[code>col[ind+1]!=未定义
。将实现,谢谢。更好的测试可能是
if(ind
,因此您测试的最后一个成员是倒数第二个和最后一个。你必须容纳稀疏数组吗?不,我不必容纳稀疏数组。我认为你的建议比[code>col[ind+1]!=未定义
。我会实施的,谢谢。