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

伪代码示例:

let array = [100, 0, 50]

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

当前回答

Let array = [267, 306, 108] let longest = Math.max(…数组);

其他回答

找到数组元素的最小值的一个简单解决方案是使用数组原型函数reduce:

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

或者使用JavaScript内置的Math.Min()函数(感谢@Tenflex):

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

这设置最小值为A[0],然后检查A[1]…A[n]是否严格小于当前最小值。如果A[i] < min,则min更新为A[i]。当所有数组元素都处理完后,返回min作为结果。

编辑:包括最小值位置:

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 }

使用展开运算符(ES6)

Math.max(...array)  // The same with "min" => Math.min(...array)

Const数组= [10,2,33,4,5]; console.log ( Math.max数组(…) )

很简单,真的。

var arr = [10,20,30,40];
arr.max = function() { return  Math.max.apply(Math, this); }; //attach max funct
arr.min = function() { return  Math.min.apply(Math, this); }; //attach min funct

alert("min: " + arr.min() + " max: " + arr.max());

下面的脚本在ndoejs中为我工作:

 var numbers = [1, 2, 3, 4];
 console.log('Value:: ' + Math.max.apply(null, numbers) ); // 4

如果你使用的是原型机,ChaosPandion的解决方案是有效的。如果不是,考虑一下:

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

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

如果数组值不是整数,上面的函数将返回NaN,因此您应该构建一些功能来避免这种情况。否则这个就可以了。