Javascript从3个输入中查找最大数量

Javascript从3个输入中查找最大数量,javascript,max,Javascript,Max,我刚从大学开始学Javascript。一项任务是定义并调用函数,从用户输入的3个数字中查找最大数字。我知道有一个max()函数,但我们被告知使用if和else if手动执行 正如你所看到的,我在某个地方出了问题。它只是告诉我每次最大值都是0 function maxNum(num1, num2, num3){ var max = 0; if(num1 > num2){ if(num1 > num3){

我刚从大学开始学Javascript。一项任务是定义并调用函数,从用户输入的3个数字中查找最大数字。我知道有一个max()函数,但我们被告知使用if和else if手动执行

正如你所看到的,我在某个地方出了问题。它只是告诉我每次最大值都是0

function maxNum(num1, num2, num3){
        var max = 0;
        if(num1 > num2){
            if(num1 > num3){
                num1 = max;
            }
            else{
                num3 = max;
            }
        }
        else{
            if(num2 > num3){
                num2 = max;
            }
        }
    return max;
    }

    for(i=0;i<3;i++){
        parseInt(prompt("Enter a number"));
    }
    document.write(maxNum());
函数maxNum(num1、num2、num3){
var max=0;
如果(num1>num2){
如果(num1>num3){
num1=最大值;
}
否则{
num3=最大值;
}
}
否则{
如果(num2>num3){
num2=最大值;
}
}
返回最大值;
}

对于(i=0;i此处不需要函数,只需将它们作为输入进行比较即可

var max=0;
对于(var i=0;i val?max:val;
} 

警报(最大值);
您遇到的一个问题是您没有保存用户输入的数字。您可以提示用户,将其解析为int,然后不保存。您必须将这3个数字传递到
maxNum()

下面是一个使用正确的左手赋值并保存数字的工作示例。另外,最好使用
=
而不是
,因为用户可以输入相同数字的2

function maxNum(num1, num2, num3){
        var max = 0;
        if((num1 >= num2) && (num1 >= num3)){
            max = num1;
        }
        else if((num2 >= num1) && (num2 >= num3)){
            max = num2;
        }
        else{
            max = num3;
        }
    return max;
    }

    var arr = []; 
    for(i=0;i<3;i++){
        arr[i] = parseInt(prompt("Enter a number"));
    }


    document.write(maxNum.apply(this, arr));
函数maxNum(num1、num2、num3){
var max=0;
如果((num1>=num2)和&(num1>=num3)){
max=num1;
}
否则如果((num2>=num1)和&(num2>=num3)){
max=num2;
}
否则{
max=num3;
}
返回最大值;
}
var-arr=[];
对于(i=0;i最简单的方法:

function maxNum(num1, num2, num3){
    var tmp = 0;
    if(num1 < num2 && num3 < num2) {
        tmp = num2;
    } else if(num3 < num1){
        tmp = num1;
    } else {
        tmp = num3;    
    }
    return tmp;
}
var arr = [];
for(var i = 0; i < 3; i++) {
    arr[i] = prompt("Enter a number");
}
console.log(maxNum.apply(this, arr));
函数maxNum(num1、num2、num3){
var-tmp=0;
如果(num1
首先在javascript和最现代的编程语言赋值中,如
a=b
b
的值复制到变量
a
中。它不等同于
b=a
(将
a
的值复制到变量
b
)。编写
a=1
很常见,但在大多数语言中,编写
1=a
会出现语法错误。因此,您不希望编写
num1=max
,而是编写
max=num1

其次,您的逻辑不正确,因为它无法正确处理案例
maxNum(1,2,3)
。(在
num1
num2
时执行逻辑。以下代码可以工作:

function maxNum(num1, num2, num3){
    var max = 0;
    if(num1 > num2){
        if(num1 > num3){
            max = num1;
        }
        else{
            max = num3;
        }
    }
    else{
        if(num2 > num3){
            max = num2;
        } else {
            max = num3;
        }
    }
    return max;
}
当然,我可能会写这样的东西

function max3num(num1, num2, num3) {
    var max_so_far = num1;
    if (num2 > max_so_far) {
       max_so_far = num2;
    }
    if (num3 > max_so_far) {
       max_so_far = num3;
    }
    return max_so_far;
}

由于逻辑非常清晰,如果有必要,可以很容易地扩展到包含更多元素的max函数进行比较。(添加for循环可以使其非常容易地可变)。很容易看出逻辑的工作原理,因为我们从第一个元素开始,它是迄今为止的最大值(
max\u-so\u-far
)然后,考虑第二个元素是否更大——如果是这样,我们将其赋值为“代码>Max SooOfLeave/Cult>,并继续进行下去,直到我们将所有元素与Max SoOffAu/<代码>进行比较。S6语法,以更简单的方式计算三个数字中的最大值,
const最大=a=>F=b=>G=c=>((a>b&a>c)a:(b>a&b>c)b:c)
控制台。时间()
控制台日志(最大(53)(30907)(23333))

console.timeEnd()
更新后的直接答案是:

function maxNum(num1, num2, num3){
    return [num1, num2, num3].sort(function (a, b) { return b - a })[0];
}
如果这样写的话,它可以很容易地修改,通过向它传递一个所述数字的数组来获取任意数量的数字

var numArray = [num1, num2, num3, num4, ...];
function maxNum(numArray){
    return numArray.sort(function (a, b) { return b - a })[0];
}
详情如下:

以数组为例:

[5,42,16]
[5,42,16].sort(function (a, b) { return b - a })[0]
现在把它分类

[5,42,16].sort()
但是这不起作用,因为javascript.sort需要传入一个函数。这个函数告诉它如何对数组进行排序

这会将其从高到低排序,例如a小于b

function (a, b) { return b - a }
这将从最低到最高排序,例如b小于a

function (a, b) { return a - b }
因此,我们将其添加到:

[5,42,16].sort(function (a, b) { return b - a })
但这将返回排序后的数组,而不是最大数

因此,我们选择数组中的第一个元素:

[5,42,16]
[5,42,16].sort(function (a, b) { return b - a })[0]
最后,您可以拉出排序函数。不过这主要是为了演示

var maxSorter = function (a, b) { return b - a };
function maxNum(numArray){
    return numArray.sort(maxSorter)[0];
}

您需要使用正确的左手赋值,存储用户输入,并将该输入传递给您的函数。从Pizzaman代码中获取的逻辑仍然是错误的。尝试
maxNum(1,2,3)
,您将得到
0
而不是
3
。哦,您是对的。我修复了它以使其更简单