我有一个快速的问题,为什么我的函数返回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
答案 0 :(得分:3)
在最后一次迭代中,您将返回undefined
,这将被解释为false
。代码就是这样做的,因为如果if
失败(它在最后一个元素上执行),则没有return
语句。如果您在return true
之后将if
添加到结尾处。
答案 1 :(得分:2)
当你到达最后一个元素时,你会测试是否有下一个元素,所以你不要将最后一个元素与任何东西进行比较。太棒了。但在这种情况下,您忘记return
任何内容,默认return
为undefined
,这是假的。只需输入else return true
。