Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 修正了比较零和负数的问题_Javascript_Arrays_Comparison - Fatal编程技术网

Javascript 修正了比较零和负数的问题

Javascript 修正了比较零和负数的问题,javascript,arrays,comparison,Javascript,Arrays,Comparison,我在完成这项任务时遇到了一个问题。这是因为在尝试完成这个算法时,我得到了一个奇怪的结果 function main(arr) { let max; let sum; for(let a=0; a<arr.length-2; a++){ for(let b=0; b<arr.length-2; b++){ sum = arr[a][b] + arr[a][b+1] + arr[a][

我在完成这项任务时遇到了一个问题。这是因为在尝试完成这个算法时,我得到了一个奇怪的结果

function main(arr) {  
    let max;
    let sum;
    
    for(let a=0; a<arr.length-2; a++){
        for(let b=0; b<arr.length-2; b++){
            sum = 
            arr[a][b] + arr[a][b+1] + arr[a][b+2] + 
            arr[a+1][b+1] + 
            arr[a+2][b] + arr[a+2][b+1] + arr[a+2][b+2];
            console.log(sum);
            if(!max || sum > max){
                max = sum;
            }
        }        
    }
    console.log(max)
}

main([
    [-1,  1, -1,  0,  0, 0],
    [ 0, -1,  0,  0,  0, 0],
    [-1, -1, -1,  0,  0, 0],
    [ 0, -9,  2, -4, -4, 0],
    [-7,  0,  0, -2,  0, 0],
    [ 0,  0, -1, -2, -4, 0],
]);
主功能(arr){
让马克斯;
让我们总结一下;

for(假设a=0;a 0。为什么会发生这种情况?

之所以会发生这种情况,是因为代码中的!max部分。正如您在
max==0
中看到的,在这种情况下,if部分变成

if(!0 && -9 > 0) {

}
虽然
-9>0
为false,但当
!0==
为true时,if块变为

if(!false || false) => if(true || false) => if(true)
这就是我们更新最大值的原因

现在要解决您的问题,您可以在代码的第一行设置
max=-Infinity
,并从if块中删除
!max
部分。因此,您的方法是

主功能(arr){
设max=-无穷大;
让我们总结一下;
for(设a=0;a