为什么我从Maths.max获得NaN?

mat*_*bie 0 javascript split

所以我试图从以下测试用例中获得最高数量:

Test.assertEquals(highAndLow("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"), "542 -214");
Test.assertEquals(highAndLow("1 -1"), "1 -1");
Test.assertEquals(highAndLow("1 1"), "1 1");
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有以下内容:

function highAndLow(numbers){
    var numbers;
    var str;
    numbers = numbers.split(' ');
    str = numbers.toString();
    var a = Math.max(str);
    return a;  
}
Run Code Online (Sandbox Code Playgroud)

我得到NaN.我知道.split工作正常.有人可以帮帮我吗?

Jos*_*eph 5

Math.max接受了一系列号码或号码的作为字符串(Math.max调用toNumber内部为每一个参数).在number.toString()你的代码是没有必要的.

如果要使用Math.max任意数量的参数,可以使用apply.

Math.max.apply(null, numbersArray);
Run Code Online (Sandbox Code Playgroud)

或使用spread运算符将数组作为参数传播.

Math.max(...numbersArray);
Run Code Online (Sandbox Code Playgroud)