所以我试图从以下测试用例中获得最高数字:
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");
到目前为止,我有以下内容:
function highAndLow(numbers){
var numbers;
var str;
numbers = numbers.split(' ');
str = numbers.toString();
var a = Math.max(str);
return a;
}
我得到NaN
。我知道.split工作正常。有人可以帮帮我吗?
答案 0 :(得分:5)
Math.max
接受一系列数字或数字作为字符串(每个参数Math.max
calls toNumber
internally)。您的代码中不需要number.toString()
。
如果要对任意数量的参数使用Math.max
,可以使用apply
。
Math.max.apply(null, numbersArray);
或使用spread operator将数组作为参数传播。
Math.max(...numbersArray);
答案 1 :(得分:0)
Math.max
传递多个参数,其中每个参数都是一个数字。你传给它一个字符串。
您可能希望Math.max.apply(Math, numbers)
允许您传递一组参数。
答案 2 :(得分:0)
当你拆分字符串时,我们得到一个字符串数组。我们需要使它成为一组数字。对于此用途map(Number)
。然后使用以下内容。
function highAndLow(numbers){
var numbers;
var str;
numbers = numbers.split(' ').map(Number);
var a = Math.max.apply(Math, numbers);
return a;
}