我怎样才能轻松地获得一个JavaScript数组的最小或最大元素?

伪代码示例:

let array = [100, 0, 50]

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

当前回答

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

给出数字数组中的最大值。

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

给出一组数字中的最小值。

Let array = [0,20,45,85,41,5,7,85,90,111]; 令maximum = array。排序((a, b) => b - a)[0]; 令minimum = array。排序((a, b) => a - b)[0]; console.log(最小值,最大值)

其他回答

这也许适合你的目的。

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;
}

你可以使用数组。排序,但你必须写一个简单的数字排序函数,因为默认是字母排序。

看例2。

然后你可以得到arr[0]和arr[arr。长度-1]来得到最小值和最大值。

我很惊讶没有人提到reduce功能。

var arr = [1, 10, 5, 11, 2]

var b = arr.reduce(function(previous,current){ 
                      return previous > current ? previous:current
                   });

b => 11
arr => [1, 10, 5, 11, 2]

如何使用Math.max/Math扩展内置Array对象呢?最小值:

Array.prototype.max = function() { Math.max返回。应用(null,这); }; Array.prototype.min = function() { Math.min返回。应用(null,这); }; 令p = [35,2,65,7,8,9,12,121,33,99]; console.log('最大值为:${p.max()} ' + \nMin值为:${p.min()} ');

这是一个JSFiddle。

扩充内置库可能会导致与其他库的冲突(有些见),所以你可能更喜欢直接将Math.xxx()应用到你的数组:

var min = Math.min.apply(null, arr),
    max = Math.max.apply(null, arr);

另外,假设你的浏览器支持ECMAScript 6,你可以使用扩展语法,它的功能类似于apply方法:

var min = Math.min( ...arr ),
    max = Math.max( ...arr );

对于包含对象而不是数字的数组:

arr = [
  { name: 'a', value: 5 },
  { name: 'b', value: 3 },
  { name: 'c', value: 4 }
]

你可以使用reduce来获取最小值(min)的元素

arr.reduce((a, b) => a.value < b.value ? a : b)
// { name: 'b', value: 3 }

或最大值(max)

arr.reduce((a, b) => a.value > b.value ? a : b)
// { name: 'a', value: 5 }