我怎样才能轻松地获得一个JavaScript数组的最小或最大元素?
伪代码示例:
let array = [100, 0, 50]
array.min() //=> 0
array.max() //=> 100
我怎样才能轻松地获得一个JavaScript数组的最小或最大元素?
伪代码示例:
let array = [100, 0, 50]
array.min() //=> 0
array.max() //=> 100
当前回答
在这个时代(2022年),从数组中获得min + max的最有效方法是通过reduce在一次迭代中完成。
在JavaScript中:
const arr = [3, 0, -2, 5, 9, 4];
const i = arr.reduce((p, c) => {
p.min = c < p.min ? c : p.min ?? c;
p.max = c > p.max ? c : p.max ?? c;
return p;
}, {min: undefined, max: undefined});
console.log(i); //=> { min: -2, max: 9 }
当输入没有数据时,它将输出{min: undefined, max: undefined}。
在TypeScript中,你只需要添加类型强制转换,所以返回类型被推断为{min: number, max: number},而不是{min: any, max: any}:
const arr = [3, 0, -2, 5, 9, 4];
const i = arr.reduce((p, c) => {
p.min = c < p.min ? c : p.min ?? c;
p.max = c > p.max ? c : p.max ?? c;
return p;
}, {min: undefined as number, max: undefined as number});
//=> {min: number, max: number}
console.log(i); //=> { min: -2, max: 9 }
更新
在kiran goud注释之后,这里有一个使用数组而不是对象的替代方法:
const i = arr.reduce((p, c) => {
p[0] = c < p[0] ? c : p[0] ?? c;
p[1] = c > p[1] ? c : p[1] ?? c;
return p;
}, [undefined, undefined]);
console.log(i); //=> [-2, 9]
其他回答
我想分享一下我简单易懂的解决方案。
对于最小值:
var arr = [3, 4, 12, 1, 0, 5]; 是我的 = arr[0]; for (var k = 1; k < arr.length; k++) { if (arr[k] < min) { 分钟 = arr[k]; } } console.log(“我的冰淇淋:”+分钟);
对于最大值:
Var arr = [3,4,12,1,0,5]; Var Max = arr[0]; For (var k = 1;K < arrr .length;k + +) { If (arr[k] > max) { Max = arr[k]; } } console.log("Max is: " + Max);
有两种方法更简单:
let arr = [2, 6, 1, 0]
方式1:
let max = Math.max.apply(null, arr)
方式2:
let max = arr.reduce(function(a, b) {
return Math.max(a, b);
});
出于学习目的,你可以使用变量和For循环,而不使用内置函数。
// Input sample data to the function var arr = [-1, 0, 3, 100, 99, 2, 99]; // Just to show the result console.log(findMinMax(arr)); function findMinMax(arr) { let arraySize = arr.length; if (arraySize > 0) { var MaxNumber = MinNumber = arr[0]; for (var i = 0; i <= arraySize; i++) { if (arr[i] > MaxNumber) { MaxNumber = arr[i]; }else if(arr[i] < MinNumber) { MinNumber = arr[i]; } } var minMax = [MinNumber,MaxNumber]; return minMax; } else { return 0; } }
minHeight = Math.min.apply({},YourArray);
minKey = getCertainKey(YourArray,minHeight);
maxHeight = Math.max.apply({},YourArray);
maxKey = getCertainKey(YourArray,minHeight);
function getCertainKey(array,certainValue){
for(var key in array){
if (array[key]==certainValue)
return key;
}
}
使用展开运算符(ES6)
Math.max(...array) // The same with "min" => Math.min(...array)
Const数组= [10,2,33,4,5]; console.log ( Math.max数组(…) )