查找数组和字符串之间的最大数字

时间:2019-03-30 02:24:14

标签: javascript arrays loops

我有此代码:

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

我该如何解决这个问题?

3 个答案:

答案 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)); 

旁注:-:这假设您的所有输入均为numbersnumeric 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"))