我有一个简单的问题,为什么我的函数返回 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
语句。如果您在 if
之后添加 return true
,它应该可以工作。
关于javascript - 为什么 Javascript 'every' 函数返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25655586/