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

伪代码示例:

let array = [100, 0, 50]

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

当前回答

对于一个简洁的现代解决方案,可以对数组执行reduce操作,跟踪当前的最小值和最大值,因此数组只迭代一次(这是最优的)。为了简洁起见,这里使用了解构赋值。

Let array = [100, 0, 50]; Let [min, max] =数组。减少(((prevMin prevMax],咕咕叫)= > (数学。min(prevMin, curr),数学。max(prevMax, curr)],[∞,-∞]); console.log(“分钟:分钟); console.log(“马克斯:Max);

为了只找到最小值或最大值,我们可以以大致相同的方式使用执行reduce操作,但我们只需要跟踪之前的最优值。这种方法比使用apply更好,因为当数组对堆栈来说太大时,它不会导致错误。

Const arr = [- 1,9,3, - 6,35]; //只找到最小值 const min = arr.reduce((a,b)=>Math.min(a,b),无穷大); console.log(“分钟:Min); / / 6 //只找到最大值 const max = arr.reduce((a,b)=>Math.max(a,b), -无穷大); console.log(“马克斯:Max); / / 35

其他回答

插入以逗号分隔的数字,然后单击要调用的事件,即获取最大或最小数字。

function maximumNumber() { var numberValue = document.myForm.number.value.split(","); var numberArray = []; for (var i = 0, len = numberValue.length; i < len; i += 1) { numberArray.push(+numberValue[i]); var largestNumber = numberArray.reduce(function (x, y) { return (x > y) ? x : y; }); } document.getElementById("numberOutput").value = largestNumber; } function minimumNumber() { var numberValue = document.myForm.number.value.split(","); var numberArray = []; for (var i = 0, len = numberValue.length; i < len; i += 1) { numberArray.push(+numberValue[i]); var smallestNumber = numberArray.reduce(function (x, y) { return (x < y) ? x : y; }); } document.getElementById("numberOutput").value = smallestNumber; } function restrictCharacters(evt) { evt = (evt) ? evt : window.event; var charCode = (evt.which) ? evt.which : evt.keyCode; if (((charCode >= '48') && (charCode <= '57')) || (charCode == '44')) { return true; } else { return false; } } <div> <form name="myForm"> <table> <tr> <td>Insert Number</td> <td><input type="text" name="number" id="number" onkeypress="return restrictCharacters(event);" /></td> <td><input type="button" value="Maximum" onclick="maximumNumber();" /></td> <td><input type="button" value="Minimum" onclick="minimumNumber();"/></td> <td><input type="text" id="numberOutput" name="numberOutput" /></td> </tr> </table> </form> </div>

创建一个简单的对象

var myArray = new Array();

myArray = [10,12,14,100];

var getMaxHeight = {
     hight : function( array ){ return Math.max.apply( Math, array );
}

getMaxHeight.hight(myArray);

这个问题的递归解

const findMinMax = (arr, max, min, i) => arr。长度=== I ?{ 分钟, 马克斯 }: findMinMax ( 加勒比海盗, r[i] > Max ?Arr [i]: max, Arr [i] < min ?Arr [i]: min, + + i) Const arr = [5,34, 2,1,6,7,9,3]; const max = findMinMax(arr, arr[0], arr[1], 0) console.log (max);

使用展开运算符(ES6)

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

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

我很惊讶没有人提到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]