javascript - 比较两个数组的 for 循环总是返回 false
问题描述
作为编码挑战的一部分,我正在创建一个比较两个数组的函数,只要 Array1 中的至少 1 个值超过其在 Array2 中的对应值,则返回“true”,否则返回 false。
因此,const a = isFirstSuperior([1, 2, 3, 4], [1, 2, 3, 3])
应该解析为“真”,因为每个数组中的最后一位数字(4 确实大于 3。
我的困惑的根源如下:
- 为什么我的解决方案(下)总是将上述表达式解析为“假”;和
- 鉴于实际解决方案的“return false”语句完全在“for 循环”之外,为什么他们的代码不是每次都自动解析为“false”?它怎么知道在这种情况下尊重'for循环'返回'true'并跳到函数末尾而不返回'false'?
我的(不成功的)解决方案:
function isFirstSuperior(arr1, arr2) {
for (i=0; i < arr1.length; i++) {
if (arr1[i] > arr2[i]) {
return true
} else {
return false
}
}
}
实际解决方案:
function isFirstSuperior(arr1, arr2) {
for (i=0; i < arr1.length; i++) {
if (arr1[i] > arr2[i]) {
return true
}
}
return false
}
解决方案
如果整个循环完成,工作解决方案只会返回 false。
否则,如果return true
执行了循环中断并退出函数并且return false
永远不会到达该语句。
您的版本不会超过数组中的第一个元素,因为您有两个条件的 return 并且 return 会中断循环并退出函数