JavaScript如何获取javascript数组最大值值和最小值

JavaScript学习笔记:取数组中最大值和最小值 - 推酷
JavaScript学习笔记:取数组中最大值和最小值
在实际业务中有的时候要取出数组中的最大值或最小值。但在数组中并没有提供 arr.max() 和 arr.min() 这样的方法。那么是不是可以通过别的方式实现类似这样的方法呢?那么今天我们就来整理取出数组中最大值和最小值的一些方法。
取数组中最大值
可以先把思路理一下:
将数组中第一个元素赋值给一个变量,并且把这个变量作为最大值;
开始遍历数组,从第二个元素开始依次和第一个元素进行比较
如果当前的元素大于当前的最大值,就把当前的元素值赋值给最大值
移动到下一个元素,继续按前面一步操作
当数组元素遍历结束时,这个变量存储的就是最大值
Array.prototype.max = function () {
// 将数组第一个元素的值赋给max
var max = this[0];
// 使用for 循环从数组第一个值开始做遍历
for (var i = 1; i & this. i++) {
// 如果元素当前值大于max,就把这个当前值赋值给max
if (this[i] & max) {
max = this[i];
// 返回最大的值
来看一个示例:
var arr = [1,45,23,3,6,2,7,234,56];
arr.max(); // 234
上面的示例,数组中都是数值,那么如果数组中不全是数值会是一个什么样的效果呢?来测试一下先:
var arr = [1,45,23,3,6,2,7,234,56,'2345','a','c'];
arr.max(); // 'c'
这并不是我们想要的结果吧。( 此处跪求解决方案 )
通过前段时间的学习,都知道 for 循环性能要比 forEach() 差,那可以将上面的方法改成 forEach() 方法:
Array.prototype.max = function (){
var max = this[0];
this.forEach (function(ele,index,arr){
if(ele & max) {
var arr = [1,45,23,3,6,2,7,234,56];
arr.max(); // 234
取数组中最小值
类似取最大值的思路一样,我们可以很轻松的实现 arr.min() 方法,取出数组中的最小值:
Array.prototype.min = function () {
var min = this[0];
this.forEach(function(ele, index,arr) {
if(ele & min) {
var arr = [1,45,23,3,6,2,7,234,56];
arr.min(); // 1
除了上面的方案,还可以有其他方法,比如使用数组的 reduce() 方法。回忆前面的学过的知识,
可以接收一个回调函数 callbackfn ,可以在这个回调函数中拿数组中的初始值( preValue )与数组中当前被处理的数组项( curValue )做比较,如果 preValue 大于 curValue 值返回 preValue ,反之返回 curValue 值,依此类推取出数组中最大值:
Array.prototype.max = function() {
return this.reduce(function(preValue, curValue,index,array) {
return preValue & curValue ? preValue : curV
var arr = [1,45,23,3,6,2,7,234,56];
arr.max(); // 234
同样的也可以使用类似的方法实现 arr.mix() 方法,取出数组中的最小值:
Array.prototype.min = function() {
return this.reduce(function(preValue, curValue,index,array) {
return preValue & curValue ? curValue : preV
var arr = [1,45,23,3,6,2,7,234,56];
arr.min(); // 1
内置函数 Math.max() 和 Math.min() 方法
对于纯数字数组,可以使用JavaScript中的内置函数 Math.max() 和 Math.min() 方法。使用这两个内置函数可以分别找出数组中的最大值和最上值。在使用这两种内置函数取出数组最大和最小值之前,先学习一下 Math.max() 和 Math.min() 两个函数。
Math.max()
Math.max() 函数返回一组数中的最大值。
Math.max(1,32,45,31,3442,4); // 3442
Math.max(10, 20);
Math.max(-10, -20); // -10
Math.max(-10, 20);
Math.min()
Math.min() 函数和 Math.max() 函数刚好相反,其会返回一组数中的最小值:
Math.min(10,20); //10
Math.min(-10,-20); //-20
Math.min(-10,20); //-10
Math.min(1,32,45,31,3442,4); //1
这些函数如果没有参数,则结果为 -Infinity ;如果有任一参数不能被转换为数值,则结果为 NaN 。最主要的是这两个函数对于数字组成的数组是不能直接使用的。但是,这有一些类似地方法。
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的方法来实现此功能,是使用
var numbers = [1, 2, 3, 4];
Math.max(...numbers) // 4
Math.min(...numbers) // 1
此运算符使数组中的值在函数调用的位置展开。
这篇文章整理了几个从数组中取出最大值和最小值的方法。这几个方法都只是会对于数字数组,而对于数组中包含其他数据类型时,如何只取出最大的数值和最小的数值(如果您知道如何实现,还望指点迷津)。而这几种方法当中,使用JavaScript的内置函数 Math.max() 和 Math.min() 配合 Function.prototype.apply() 可以轻松取出数组中的最大值和最小值。当然最最简单的要当数ES2015中使用展示运算符的方法。如果大家还有更好的方案,希望能在下面的评论中与我们一起分享。
初学者学习笔记,如有不对,还希望高手指点。如有造成误解,还希望多多谅解。
常用昵称“大漠”,W3CPlus创始人,目前就职于手淘。中国Drupal社区核心成员之一。对HTML5、CSS3和Sass等前端脚本语言有非常深入的认识和丰富的实践经验,尤其专注对CSS3的研究,是国内最早研究和使用CSS3技术的一批人。CSS3、Sass和Drupal中国布道者。2014年出版《
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致正文 Js取数组最大和最小值的例子
Js取数组最大和最小值的例子
发布时间: & 编辑:
本文分享一个javascript取得数组的最大值与最小值的例子,学习下javascript数组的操作方法,有需要的朋友作个参考吧。
* 数组最大值
* @param {Object} array
* @return {TypeName}
Array.max=function(array)
return Math.max.apply(Math,array);
* 数组最小值
* @param {Object} array
* @return {TypeName}
Array.min=function(array)
return Math.min.apply(Math,array);
调用示例,取得坐标的最大值与最小值:
复制代码 代码示例:
//处理纵坐标自适应--start
var yData = data.rows[i];
var yMin = Array.min(yData);//纵坐标最小值
var yMax = Array.max(yData);//纵坐标最大值您可能感兴趣的文章:JS获取数组最大值、最小值及长度的方法
(window.slotbydup=window.slotbydup || []).push({
id: '2611110',
container: s,
size: '240,200',
display: 'inlay-fix'
您当前位置: &
[ 所属分类
作者 红领巾 ]
本文实例讲述了JS获取数组最大值、最小值及长度的方法。分享给大家供大家参考,具体如下://最小值Array.prototype.min = function() {var min = this[0];var len = this.for (var i = 1; i & i++){if (this[i] & min){min = this[i];}}}//最大值Array.prototype.max = function() {var max = this[0];var len = this.for (var i = 1; i & i++){if (this[i] & max) {max = this[i];}}}//数组长度var array = new array(1,2,3,2,4,55,2);alert(array.length);//输出7希望本文所述对大家程序设计有所帮助。
本文前端(javascript)相关术语:javascript是什么意思 javascript下载 javascript权威指南 javascript基础教程 javascript 正则表达式 javascript设计模式 javascript高级程序设计 精通javascript javascript教程
转载请注明本文标题:本站链接:
分享请点击:
1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
CodeSecTeam微信公众号
把一件件小事做好,最后就做成了大事。
手机客户端Javascript 是一种由Netscape的LiveScript发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
比较数组中数值的大小是比较常见的操作,下面同本文给大家分享四种放哪广发获取数组中最大值和最小值,对此感兴趣的朋友一起学习吧
比较数组中数值的大小是比较常见的操作,比较大小的方法有多种,比如可以使用自带的sort()函数,下面来介绍如下几种方法,代码如下:
Array.prototype.min = function() {
var min = this[0];
var len = this.
for (var i = 1; i & i++){
if (this[i] & min){
min = this[i];
Array.prototype.max = function() {
var max = this[0];
var len = this.
for (var i = 1; i & i++){
if (this[i] & max) {
max = this[i];
如果你是引入类库进行开发,害怕类库也实现了同名的原型方法,可以在生成函数之前进行重名判断:
if (typeof Array.prototype['max'] == 'undefined') {
Array.prototype.max = function() {
用Math.max和Math.min方法可以迅速得到结果。apply能让一个方法指定调用对象与传入参数,并且传入参数是以数组形式组织的。恰恰现在有一个方法叫Math.max,调用对象为Math,与多个参数
Array.max = function( array ){
return Math.max.apply( Math, array );
Array.min = function( array ){
return Math.min.apply( Math, array );
但是,John Resig是把它们做成Math对象的静态方法,不能使用大神最爱用的链式调用了。但这方法还能更精简一些,不要忘记,Math对象也是一个对象,我们用对象的字面量来写,又可以省几个比特了。
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
function getMaximin(arr,maximin)
if(maximin=="max")
return Math.max.apply(Math,arr);
else if(maximin=="min")
return Math.min.apply(Math, arr);
var a=[3,2,4,2,10];
var b=[12,4,45,786,9,78];
console.log(getMaximin(a,"max"));//10
console.log(getMaximin(b,"min"));//04
var a=[1,2,3,5];
alert(Math.max.apply(null, a));//最大值
alert(Math.min.apply(null, a));//最小值
多维数组可以这么修改:
var a=[1,2,3,[5,6],[1,4,8]];
var ta=a.join(",").split(",");//转化为一维数组
alert(Math.max.apply(null,ta));//最大值
alert(Math.min.apply(null,ta));//最小值
以上内容是小编给大家分享的Javascript获取数组中的最大值和最小值的方法汇总,希望大家喜欢。
Copyright &
All Rights Reserved &&&&&&

我要回帖

更多关于 求数组最大值最小值 的文章

 

随机推荐