Find the min/max element of an Array in JavaScript

前端 未结 30 2109
無奈伤痛
無奈伤痛 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:47
    array.sort((a, b) => b - a)[0];
    

    Gives you the maximum value in an array of numbers.

    array.sort((a, b) => a - b)[0];
    

    Gives you the minimum value in an array of numbers.

    let array = [0,20,45,85,41,5,7,85,90,111];
    
    let maximum = array.sort((a, b) => b - a)[0];
    let minimum = array.sort((a, b) => a - b)[0];
    
    console.log(minimum, maximum)

    0 讨论(0)
  • 2020-11-21 06:47

    ChaosPandion's solution works if you're using protoype. If not, consider this:

    Array.max = function( array ){
        return Math.max.apply( Math, array );
    };
    
    Array.min = function( array ){
        return Math.min.apply( Math, array );
    };
    

    The above will return NaN if an array value is not an integer so you should build some functionality to avoid that. Otherwise this will work.

    0 讨论(0)
  • 2020-11-21 06:49

    Here's one way to get the max value from an array of objects. Create a copy (with slice), then sort the copy in descending order and grab the first item.

    var myArray = [
        {"ID": 1, "Cost": 200},
        {"ID": 2, "Cost": 1000},
        {"ID": 3, "Cost": 50},
        {"ID": 4, "Cost": 500}
    ]
    
    maxsort = myArray.slice(0).sort(function(a, b) { return b.ID - a.ID })[0].ID; 
    
    0 讨论(0)
  • 2020-11-21 06:50

    Aside using the math function max and min, another function to use is the built in function of sort(): here we go

    const nums = [12, 67, 58, 30].sort((x, y) => 
    x -  y)
    let min_val = nums[0]
    let max_val = nums[nums.length -1]
    
    0 讨论(0)
  • 2020-11-21 06:51

    A simple solution to find the minimum value over an Array of elements is to use the Array prototype function reduce:

    A = [4,3,-9,-2,2,1];
    A.reduce((min, val) => val < min ? val : min, A[0]); // returns -9
    

    or using JavaScript's built-in Math.Min() function (thanks @Tenflex):

    A.reduce((min,val) => Math.min(min,val), A[0]);
    

    This sets min to A[0], and then checks for A[1]...A[n] whether it is strictly less than the current min. If A[i] < min then min is updated to A[i]. When all array elements has been processed, min is returned as the result.

    EDIT: Include position of minimum value:

    A = [4,3,-9,-2,2,1];
    A.reduce((min, val) => val < min._min ? {_min: val, _idx: min._curr, _curr: min._curr + 1} : {_min: min._min, _idx: min._idx, _curr: min._curr + 1}, {_min: A[0], _idx: 0, _curr: 0}); // returns { _min: -9, _idx: 2, _curr: 6 }
    
    0 讨论(0)
  • 2020-11-21 06:51

    This may suit your purposes.

    Array.prototype.min = function(comparer) {
    
        if (this.length === 0) return null;
        if (this.length === 1) return this[0];
    
        comparer = (comparer || Math.min);
    
        var v = this[0];
        for (var i = 1; i < this.length; i++) {
            v = comparer(this[i], v);    
        }
    
        return v;
    }
    
    Array.prototype.max = function(comparer) {
    
        if (this.length === 0) return null;
        if (this.length === 1) return this[0];
    
        comparer = (comparer || Math.max);
    
        var v = this[0];
        for (var i = 1; i < this.length; i++) {
            v = comparer(this[i], v);    
        }
    
        return v;
    }
    
    0 讨论(0)
提交回复
热议问题