原生js获取数组中的最大值max和最小值min的方法总结

时间: 2017-12-04阅读: 526标签: Array

原生jJavaScript获取数组中的最大值和最小值:方法一:传统循环遍历,方法二:利用Math.max和Math.min,方式三.利用sort排序...


方法一:传统循环遍历

//最小值
Array.prototype.min = function() {
	var min = this[0];
	var len = this.length;
	for(var i = 1; i < len; i++) {
		if(this[i] < min) {
			min = this[i];
		}
	}
	return min;
}
//最大值
Array.prototype.max = function() {
	var max = this[0];
	var len = this.length;
	for(var i = 1; i < len; i++) {
		if(this[i] > max) {
			max = this[i];
		}
	}
	return max;
}
var numbers = [10, 500 , 0 , -15 ];
console.log(numbers.max());//500
console.log(numbers.min());//-15


方法二:利用Math.max和Math.min

1.利用apply-一维数组

var numbers = [10, 500 , 0 , -15 ];
console.log(Math.min.apply(null, numbers));//-15
console.log(Math.max.apply(null, numbers));//200

2.apply集成到Array.min和Array.max:

Array.max = function(array){ 
    return Math.max.apply(Math,array );
};
Array.min = function( array ){ 
    return Math.min.apply(Math,array );
};

3.apply使用链式 

Array.prototype.max = function(){ 
return Math.max.apply({},this) 
} 
Array.prototype.min = function(){ 
return Math.min.apply({},this) 
} 
[1,2,3].max()// => 3 
[1,2,3].min()// => 1

4.使用ES6

var numbers = [10, 500 , 0 , -15 ];
console.log(Math.min(...numbers));//-15
console.log(Math.max(...numbers));//200

5.利用eval

var numbers = [10, 500 , 0 , -15 ];
var max = eval("Math.max(" + numbers + ")");
console.log(max)//500
var min = eval("Math.min(" + numbers + ")");
console.log(min)//-15

6.利用apply-多维数组

var numbers=[10,500,[-15,0],[1,2,3]];
var n=numbers.join(",").split(",");//转化为一维数组
console.log(Math.max.apply(null,n));//最大值500
console.log(Math.min.apply(null,n));//最小值-15


方式三.利用sort排序:

var numbers = [10, 500 , 0 , -15 ];
numbers.sort(function(a,b){return a - b;});
console.log(numbers[numbers.length - 1]);//最大值500
console.log(numbers[0]);//最小值-15

我们先对数组进行一次从大到小的排序,那么最大值就是最后一个值,最小值就是第一个了。


总结:

除了上面方法外,还有其他的实现方式!请留言哦~~~



JavaScript数组遍历:for、foreach、for in、for of、$.each、$().each的区别

JavaScript数组遍历的区别,推荐在循环对象属性的时候使用for in,在遍历数组的时候的时候使用for of;for in循环出的是key,for of循环出的是value;for of是ES6新引入的特性。修复了ES5的for in的不足;

JS中forEach的用法

orEach是ES5中操作数组的一种方法,主要功能是遍历数组,forEach方法中的function回调有三个参数:第一个参数是遍历的数组内容,第二个参数是对应的数组索引,第三个参数是数组本身

js 数组方法,包含ES6方法

JavaScript常用数组操作方法:concat() 方法用于连接两个或多个数组。join() 方法用于把数组中的所有元素放入一个字符串。push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。pop() 方法用于删除并返回数组的最后一个元素。

js判断数组是否包含某个元素

js判断JS 判断某变量是否为某数组中的一个值的4种方法(总结),分享给大家。indexOf()、正则表达式、arr.find() 、for循环结合if判断

js判断对象、数组是否为空

做项目时想要根据判断对象是否为空,然后执行不同的操作,下面就整理下如何实现,针对数组和对象的通用方法。方法一:isPrototypeOf()和length判断、方法二:hasOwnProperty、方法三:利用JSON.stringify()方法

for in 和 for of的区别详解

for in 和 for of 相对于大家肯定都不陌生,都是用来遍历属性的没错。for ... in 循环返回的值都是数据结构的 键值名。遍历对象返回的对象的key值,遍历数组返回的数组的下标(key)。for of 循环用来获取一对键值对中的值,而 for in 获取的是 键名

JS 将有父子关系的数组转换成树形结构数据

将有父子关系的数组数据先分为两类,一类是没有父节点的数据(取个别名parents),另一类是有父节点的数据(取个别名children),然后通过遍历parents,对每一个父节点在children查找对应的子节点,并将其放入父节点的children中(这里我的是以children表示子节点),然后每个子节点又作为一个父节点来重复之前的动作

es6中 Array.from()函数的用法

ES6为Array增加了from函数用来将其他对象转换成数组,Array.from可以接受三个参数,我们看定义:Array.from(arrayLike [, mapFn [, thisArg]])。arrayLike:被转换的的对象。 mapFn:map函数。 thisArg:map函数中this指向的对象。

js实现一维数组转换为树形结构数组

在设计树形结构的数据时候,数据库一般为:id,name,parent...如果后端不处理直接返给前端,前端就需要把这个一维数组转换为树形结构数组。下面整理了下如何通过js实现一维数组转换为树形结构数组。

js实现交换数组元素位置的方法总汇

交换数组元素位置是开发项目中经常用到的场景,总结下用过的几种方式:第三方变量、splice方法、解构赋值

fly63.com版权所有,内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权,请与小编联系!情况属实本人将予以删除!