Find the min/max element of an Array in JavaScript

前端 未结 30 2068
無奈伤痛
無奈伤痛 2020-11-21 06:18

How can I easily obtain the min or max element of a JavaScript Array?

Example Psuedocode:

let array = [100, 0, 50]

array.min() //=> 0
array.max()         


        
30条回答
  •  独厮守ぢ
    2020-11-21 06:58

    .apply is often used when the intention is to invoke a variadic function with a list of argument values, e.g.

    The Math.max([value1[,value2, ...]]) function returns the largest of zero or more numbers.

    Math.max(10, 20); // 20
    Math.max(-10, -20); // -10
    Math.max(-10, 20); // 20
    

    The Math.max() method doesn't allow you to pass in an array. If you have a list of values of which you need to get the largest, you would normally call this function using Function.prototype.apply(), e.g.

    Math.max.apply(null, [10, 20]); // 20
    Math.max.apply(null, [-10, -20]); // -10
    Math.max.apply(null, [-10, 20]); // 20
    

    However, as of the ECMAScript 6 you can use the spread operator:

    The spread operator allows an expression to be expanded in places where multiple arguments (for function calls) or multiple elements (for array literals) are expected.

    Using the spread operator, the above can be rewritten as such:

    Math.max(...[10, 20]); // 20
    Math.max(...[-10, -20]); // -10
    Math.max(...[-10, 20]); // 20
    

    When calling a function using the variadic operator, you can even add additional values, e.g.

    Math.max(...[10, 20], 50); // 50
    Math.max(...[-10, -20], 50); // 50
    

    Bonus:

    Spread operator enables you to use the array literal syntax to create new arrays in situations where in ES5 you would need to fall back to imperative code, using a combination of push, splice, etc.

    let foo = ['b', 'c'];
    let bar = ['a', ...foo, 'd', 'e']; // ['a', 'b', 'c', 'd', 'e']
    

提交回复
热议问题