我怎样才能轻松地获得一个JavaScript数组的最小或最大元素?
伪代码示例:
let array = [100, 0, 50]
array.min() //=> 0
array.max() //=> 100
我怎样才能轻松地获得一个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,因此您应该构建一些功能来避免这种情况。否则这个就可以了。