在不使用Math.max()函数的情况下获取最大值

时间:2020-05-04 20:27:40

标签: javascript

我正在解决这个问题,而且看来我正处于最佳状态。 我的代码是执行一个不使用Math.max()函数即可返回最大值的函数。

var arr = [42,13,34,8, -9, 3];

function max(array, selector) {

  var val = array[0];   

  for (var i = 1; i < array.length; i++) {
    if (selector == "Max") {
      if (array[i] > val) {
        val = array[i];
      }
    }

  }
  return val;
}

console.log(max([42,34,8,13,-9]))

4 个答案:

答案 0 :(得分:3)

您可以使用reduce函数:

function max(array) {
    return array.reduce((prev, curr) => prev > curr ? prev : curr, undefined)
}

console.log(max([42,34,8,13,-9]))
console.log(max([-1, -50,-9]))
console.log(max([]))

答案 1 :(得分:0)

您可以检查并指定实际值。

function max(array) {
    var val = array[0];

    for (var i = 1; i < array.length; i++) {
        if (array[i] > val) val = array[i];
    }

    return val;
}

console.log(max([42, 34, 8, 13, -9, 101]));

答案 2 :(得分:0)

我认为这是Array#reduce的完美用例。如果您觉得有用,这是一个递归答案:

const max =
  ([x, ...xs], m) =>
    x === undefined
      ? m
      : max(xs, m > x ? m : x);
      

console.log(max([42,34,8,13,-9]));
console.log(max([]));

答案 3 :(得分:0)

这就是我所拥有的。我接触了很多人,他们帮助我解决了这个问题。谢谢大家! 这导致了我的下一个问题: 这如何变成寻找最小值?我是否只是将(<)替换为(>)并使用i--?如果不是,为什么不呢?

function max(arr) {
    let maximum = arr[0];
    for (let i = 1; i < arr.length; i++) {
      if (arr[i] > maximum) {
        maximum = arr[i];
      }
    }
    return maximum;
 }