我有此代码:
function LrgstNum (array){
var max = 0;
var a = array.length;
var b = "";
for (counter=0;counter<a;counter++)
{
if (array[counter] > max)
{
max = array[counter];
}
else if (max < b){
max = b;
}
}
return max;
}
console.log(LrgstNum([55,4,6])); // output will be 55
我希望比较另一个字符串,然后返回最大值,这样:
function LrgstNum (array, str){
}
我希望([55,4,6], 100)
的输出为100
。
我该如何解决这个问题?
答案 0 :(得分:3)
您可以在函数中使用默认值接受一个以上的参数,然后比较最大和第二个参数并相应地返回
function LrgstNum (array, str = -Infinity){
var max = 0;
var a = array.length;
var b = "";
for (counter=0;counter<a;counter++)
{
if (array[counter] > max)
{
max = array[counter];
}
else if (max < b){
max = b;
}
}
return max > str ? max : str
}
console.log(LrgstNum([55,4,6]));
console.log(LrgstNum([55,4,6],100));
您可以使用Math.max
来缩短代码
const LrgstNum = (array, str = -Infinity) => Math.max(...array,str)
console.log(LrgstNum([55,4,6]));
console.log(LrgstNum([55,4,6],100));
旁注:-:这假设您的所有输入均为numbers
或numeric strings
。如果您的输入案例不是其他情况,则需要为此添加检查
const LrgstNum = (array, str = -Infinity) => isNaN(str) ? Math.max(...array) : Math.max(...array,str)
console.log(LrgstNum([55,4,6]));
console.log(LrgstNum([55,4,6],100));
console.log(LrgstNum([55,4,6],'Axyz'));
答案 1 :(得分:2)
使用Math.max()的简单解决方案
function LrgstNum(array, str) {
// if str is defined and is numeric combine into new array, otherwise use `array` input only
var arr = !isNaN(str) ? array.concat(str) : array
return Math.max.apply(null, arr)
}
console.log(LrgstNum([55, 4, 6], 100))
答案 2 :(得分:1)
您可以使用reduce
使其变得简单
const arr = [55,4,6]
const arrMax = arr => arr.reduce((acc, e) => acc > e ? acc : e)
const maxBtwArrAndStr = (arr, str) => arrMax(arr) > parseInt(str) ? arrMax(arr) : parseInt(str)
console.log(arrMax(arr))
console.log(maxBtwArrAndStr(arr, "100"))