1. 循环遍历
使用forEach:以找最大值为例,假设数组元素最大值max,设置max初始值0。使用forEach遍历数组,将每个元素与max比较,取较大值更新为max。
calcMax = () => {
const arr = [1, 26, 78, 199, 33, 0, 86];
let max = 0;
arr.forEach((item, index) => {
if(item > max){
max = item;
}
});
return max;
}
console.log(calcMax());
使用for循环:以找最小值为例,假设数组第一个元素为最小值min,使用for从第二个元素开始遍历整个数组,将当前遍历到的元素与min对比,更新两者中较小值为min。
calcMin = () => {
const arr = [1, 26, 78, 199, 33, 0, 86];
let min = arr[0];
for(let i = 0; i < arr.length; i ++){
if(arr[i] < min){
min = arr[i];
}
}
return min;
}
console.log(calcMin());
2.sort排序
sort排序中允许传入 sortFunction 参数,sortFunction 有两个入参,a 和 b,即两个将被比较的元素。在 a、b 比较时会出现下列三种情况:
-
如果sortFunction输出的结果小于 0,a 被排到 b 之前 -
如果sortFunction输出的结果等于 0,a 和 b 的顺序不变 -
如果sortFunction输出的结果大于 0,b 被排到 a 之前
在使用此方法时需要注意,sort排序会改变原数组。
在求解最大值时,使用sort排序将数组从大到小排列,数组的第一个值即为最大值:
calcMax = () => {
const arr = [1, 26, 78, 199, 33, 0, 86];
arr.sort((a, b) => b - a );
return arr[0];
}
console.log(calcMax());
在求解最小值时,使用sort排序将数组从小到大排列,数组的第一个值即为最小值:
calcMin = () => {
const arr = [1, 26, 78, 199, 33, 0, 86];
arr.sort((a, b) => a - b );
return arr[0];
}
console.log(calcMin());
3.使用reduce()方法
关于reduce方法的具体使用,可以查看另一篇文章# JS reduce()方法详解。
求最大值(最小值)时,从数组第一个元素开始,对当前元素与当前最大(最小)值进行比较,保留两者中较大(较小)值作为下一次比较的最大(最小)值。
求最大值:
calcMax = () => {
const arr = [1, 26, 78, 199, 33, 0, 86];
return arr.reduce((a, b) => {
return a > b ? a : b;
} );
}
console.log(calcMax());
求最小值:
calcMin = () => {
const arr = [1, 26, 78, 199, 33, 0, 86];
return arr.reduce((a, b) => {
return a < b ? a : b;
} );
}
console.log(calcMin());
4.使用Math.max()和Math.min()方法
由于Math.max()和Math.min()方法接收参数为一个或多个数字,因此首先要对数组进行处理。可以采用apply()方法或者扩展运算符对数组进行转换。
求最大值:
calcMax = () => {
const arr = [1, 26, 78, 199, 33, 0, 86];
return Math.max.apply(null, arr);
}
console.log(calcMax());
或
calcMax = () => {
const arr = [1, 26, 78, 199, 33, 0, 86];
return Math.max(...arr);
}
console.log(calcMax());
求最小值:
calcMin = () => {
const arr = [1, 26, 78, 199, 33, 0, 86];
return Math.min.apply(null, arr);
}
console.log(calcMin());
或
calcMin = () => {
const arr = [1, 26, 78, 199, 33, 0, 86];
return Math.min(...arr);
}
console.log(calcMin());