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