获取数组中最大值/最小值的三种基础方法

获取数组中的最大值/最小值

  • 例如:获取以下数组的最小值
let ary = [12, 24, 13, 8, 35, 15];
复制代码

方法一:基于sort排序

先排序,第一项为最小值,最后一项是最大值,选取首项就是咱们须要的javascript

ary.sort(function (a, b) {
	return a - b;
});
let min = ary[0];
let max = ary[ary.length - 1];
console.log(min, max);//=>8,35
复制代码

方法二:利用Math.min/max

Math.min/max要求咱们传递的数据是一项一项传递进来的,获取一堆数中的最大最小,而不是获取一个数组中的最大最小;java

let min = Math.min([12, 24, 13, 8, 35, 15]);
console.log(min);//=> NaN

let min = Math.min(12, 24, 13, 8, 35, 15);
console.log(min); //=>8
复制代码

因此在咱们使用以前须要先想办法将数组以数字的形式一个一个传进去数组

  • 一、基于ES6的展开运算符
let min = Math.min(...ary);
console.log(min);//=> 8
复制代码

因为此方法为ES6语法,因此不兼容低版本浏览器浏览器

  • 二、利用apply方法实现
    • 因为咱们主要利用的是apply以数组的方式传递参数的特性,因此this指向谁并不重要
let min = Math.min.apply(Math,ary);//=> 这里咱们的this指向并不重要,之因此写成Math由于是Math方法执行,方便记忆
console.log(min);//=> 8
复制代码

方法三:假设法

假设第一个是最大的,让数组中的每一项分别和当前假设的值比较,若是比假设的值大,则把最大的值设为新的假设值,继续向后比较便可app

let max = ary[0];
for (let i = 1; i < ary.length; i++) {
	let item = ary[i];
	item > max ? max = item : null;
}
//=> for 循环 也能够改写为 forEach
ary.forEach(item => {
	item > max ? max = item : null;
});
console.log(max); //=>35
复制代码

相关文章
相关标签/搜索