求数组最大值和最小值

```js // 如何求出数组的最大值和最小值?

Math.max(true, 0) // 1 Math.max(true, '2', null) // 2 Math.max(1, undefined) // NaN Math.max(1, {}) // NaN

var min = Math.min(); // Infinity var max = Math.max(); // Infinity console.log(min > max);

// v1: 原始方法 function max(arr) { let max = arr[0]; for (let i = 0, len = arr.length; i < len; i++) { max = Math.max(max, arr[i]); } return max; }

// v2: 使用reduce function max(arr) { return arr.reduce((prev, next) => { return Math.max(prev, next); });

return arr.reduce((prev, next) => {
    return prev > next ? prev : next;
});

}

// v3: 使用eval, 由于Math.max支持多个参数来进行比较,可以把数组转换为多个参数 // 原因:使用eval里面的字符串实际上是发生了一个隐式转换,[1, 2, 3] ==> 1, 2, 3 // 相当于是 eval("Math.max(6,4,1,8,2,11,23)"); function max(arr) { return eval(Math.max(${arr})) }

// v4: 使用apply来实现 function max(arr) { return Math.max.apply(null, arr); }

// v5: 使用ES6..., 可以把一个数组转换为参数序列 function max(arr) { return Math.max(...arr); }

function max(arr) { return Reflect.apply(Math.max, Math, arr); } ```

results matching ""

    No results matching ""