Найти наибольшее число между массивом и строкой - PullRequest
1 голос
/ 30 марта 2019

У меня есть этот код:

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 ]

3 голосов
/ 30 марта 2019

Вы можете принять еще один параметр в вашей функции со значением по умолчанию, а затем сравнить ваш максимальный и второй параметр и вернуть соответственно

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'));
2 голосов
/ 30 марта 2019

Более простое решение с использованием 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))
1 голос
/ 30 марта 2019

Вы можете использовать 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"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...