取数组中最大值和最小值

前端 专栏收录该内容
7 篇文章 0 订阅

将数组中第一个元素赋值给一个变量,并且把这个变量作为最大值;
开始遍历数组,从第二个元素开始依次和第一个元素进行比较
如果当前的元素大于当前的最大值,就把当前的元素值赋值给最大值
移动到下一个元素,继续按前面一步操作
当数组元素遍历结束时,这个变量存储的就是最大值

var arr = [1,3,6,-8,2,9,99];
    Array.prototype.max = function () {
		// 将数组第一个元素的值赋给max
		var max = this[0];
		// 使用for 循环从数组第一个值开始做遍历
		for (var i = 1; i < this.length; i++) {
		// 如果元素当前值大于max,就把这个当前值赋值给max
		if (this[i] > max) {
		max = this[i];
		}
		}
		// 返回最大的值
		return max;
	}
    
   // console.log(arr.max());

取数组中最小值

Array.prototype.min = function () {
var min = this[0];
this.forEach(function(ele, index,arr) {
if(ele < min) {
min = ele;
}
})
return min;
}
var arr = [8,45,23,3,6,2,7,234,56];
//console.log(arr.min());

使用数组的reduce()方法最大值。


 Array.prototype.max = function() {
     return this.reduce(function(preValue, curValue,index,array) {
		return preValue > curValue ? preValue : curValue;
		})
	}	
	var arr = [1,45,23,3,6,2,7,234,56];
   
   console.log(arr.max());

内置函数Math.max()和Math.min()方法
Math.max(1,32,45,31,3442,4); // 3442
Math.min(1,32,45,31,3442,4); //1

Function.prototype.apply()让你可以使用提供的this与参数组与的数组来调用参数。


   // 取出数组中最大值
 Array.max = function( array ){
 	return Math.max.apply( Math, array );
 };
 // 取出数组中最小值
 Array.min = function( array ){
	return Math.min.apply( Math, array );
 };

var arr = [1,45,23,3,6,2,7,234,56];
Array.max(arr); // 234
Array.min(arr); // 1

Math对象也是一个对象,可以使用对象的字面量来写,如:

Array.prototype.max = function () {
		return Math.max.apply({},this);
		}
	Array.prototype.min = function () {
		return Math.min.apply({},this);
	}
	var arr = [1,45,23,3,6,2,7,234,56];
	arr.max(); // 234
	arr.min(); // 1

其实还有更简单的方法。基于ES2015的方法来实现此功能,是使用展开运算符:

 Array.prototype.max = function () {
		return Math.max.apply({},this);
	}
	Array.prototype.min = function () {
		return Math.min.apply({},this);
	}
	var arr = [1,45,23,3,6,2,7,234,56];
	arr.max(); // 234
	arr.min(); // 1

这些只适用于纯数字的数组,列举了这多取最大值和最小值,当然最简单的要当数ES2015中使用展示运算符的方法。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值