Получить минимальное количество без математической функции - PullRequest
0 голосов
/ 26 августа 2018

Мне нужно получить минимальное число без использования функции Math.Min.

Функция, которую я написал, довольно обширна, как я могу сократить код и сделать его более компактным?

Не стесняйтесь предлагать другие решения!

Вот мой код:

function getMin(a,b,c) {
    if (a > b) {
        if (b > c) {
            return c;
        } else {
            return b;
        }
    } else {
        if (a > c) {
            return c;
        } else {
            return a;
        }  
    }    
}

Ответы [ 5 ]

0 голосов
/ 26 августа 2018

Есть несколько способов сделать это (я только что поделился двумя примерами)

Вот рабочий пример: https://codebrace.com/editor/b0884a856

i.Использование уменьшить

function getmin(numarray){ 
      return numarray.reduce((a, b) => ((a > b)?b:a));
}

ii.используя sort

function getmin(numarray){
      return numarray.sort()[0];
}
0 голосов
/ 26 августа 2018

Очень просто

    function getMin(a,b,c) {
      var min = arguments[0];
       for (var i = 0, j = arguments.length; i < j; i++){
            if (arguments[i] < min) {
                 min = arguments[i];
             }
        }
      return min;
    }

getMin(12,3,5,0,-8)

Демо

0 голосов
/ 26 августа 2018

Вы можете взять вложенную условную структуру.

function getMin(a, b, c) {
    return a > b
        ? b > c ? c : b
        : a > c ? c : a;
}

console.log(getMin(1, 2, 3));
console.log(getMin(1, 3, 2));
console.log(getMin(2, 1, 3));
console.log(getMin(2, 3, 1));
console.log(getMin(3, 1, 2));
console.log(getMin(3, 2, 1));
0 голосов
/ 26 августа 2018

Аналогично вашему, но более компактному, вы можете объединить это, если операторы:

function(a,b,c){
    if (a>b && a>c) return a;
    if (b>a && b>a) return b;
    if (c>a && c>b) return c;
    return a; // if they are equal
}

Это не хорошо масштабируется с большим количеством чисел.Как я уже сказал, это просто ваша компактная версия.

0 голосов
/ 26 августа 2018

Вы можете использовать метод reduce с любым количеством аргументов:

function getMin(...args) {
  return args.reduce((r, a) => r < a ? r : a, Number.MAX_SAFE_INTEGER)
}

console.log(getMin(-12, 45, 765))
console.log(getMin(-12, 45, 76, 5, 13, -123))

Или сделать то же самое, используя цикл * oldschool for:

function getMin() {
  var min = Number.MAX_SAFE_INTEGER;
  for (var i in arguments)
    if (min > arguments[i]) min = arguments[i];
  return min;
}

console.log(getMin(-12, 45, 765))
console.log(getMin(-12, 45, 76, 5, 13, -123))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...