Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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将var res更改为给定数组的最大值_Javascript_Python_Function_Scope - Fatal编程技术网

使用JavaScript将var res更改为给定数组的最大值

使用JavaScript将var res更改为给定数组的最大值,javascript,python,function,scope,Javascript,Python,Function,Scope,这是一个简单的例子,我只需要找到给定数组中的最大值。唯一的公理是数组中的所有项都是数字。我的问题是res变量没有改变。我在Python中也尝试过同样的方法,但在JavaScript中,该值似乎没有改变或更大,因此它只为if改变,然后返回到其原始值 因此,我尝试了摆弄var关键字,我尝试了将var放置在代码的不同位置(for循环外、for循环内、if语句中),我尝试了在没有var关键字的情况下也这样做,但仍然不起作用 function max(arr){ var

这是一个简单的例子,我只需要找到给定数组中的最大值。唯一的公理是数组中的所有项都是数字。我的问题是res变量没有改变。我在Python中也尝试过同样的方法,但在JavaScript中,该值似乎没有改变或更大,因此它只为if改变,然后返回到其原始值

因此,我尝试了摆弄var关键字,我尝试了将var放置在代码的不同位置(for循环外、for循环内、if语句中),我尝试了在没有var关键字的情况下也这样做,但仍然不起作用

     function max(arr){    
        var res = 0;
    for (i=1; i>arr.length; i++){

        if (arr[i-1]>arr[i]){
          res = arr[i-1]
        }

        else if (arr[i-1]<arr[i]){
           res = arr[i]
        }
    }
    for (i=0; i<arr.length; i++){
        if (res<arr[i]){
            res = arr[i]
        }
    }
    console.log(res)
}
函数最大值(arr){
var-res=0;
对于(i=1;i>arr.length;i++){
if(arr[i-1]>arr[i]){
res=arr[i-1]
}

否则如果(arr[i-1]你有一些错误,我已经对它们进行了评论。首先,你需要在循环中的
I
前面写入
let
var
,如果你不这样做
I
将成为一个全局变量。你可以阅读关于块作用域变量的内容。你的第二个循环没有意义,因为你需要检查
I
是否小于
arr、 长度

函数最大值(arr){
var-res=0;
对于(设i=1;i>arr.length;i++){//let i
if(arr[i-1]>arr[i]){
res=arr[i-1]
}

否则,如果(arr[i-1]您的循环从未在这种情况下工作:

i > arr.length
因为我是以
1
开头的,而这只是
true
的空数组

使用单循环和单检查的更好方法

函数最大值(数组){
var max=数组[0],
我
对于(i=1;imax)max=array[i];
}
返回最大值;
}

console.log(最大值([1,2,3,7,5,6]))
Damn我没有注意到I>arr.length。感谢您指出:).所以这似乎是我的一个问题,它的范围。有趣。谢谢你的快速响应@bashti,很好的昵称,如果这对你来说更容易使用,你可以检查我的编辑。谢谢:D,是的,这将是一个更快的解决方案,但我必须做这件事,因为我仍然在学习。很好的解决方案没有想到这样做。Well这就是我从醒来就开始编程的结果:D也是的,我只是没有注意到,但如果我进入了那个循环,我会注意到的。
i > arr.length