前言  在数组中并没有提供arr.max()arr.min()这样的方法。那么是不是可以通过别的方式实现类似这样的方法呢?那么今天我们就来整理取出数组中最大值和最小值的一些方法。
 
法一:其实利用 ECMAScript5的 ...展开运算符可以很简单的解决这个问题
var arr=[,,,,,];
Math.max(...arr); //
Math.min(...arr); //
 法二 : 对数组进行遍历
对于数组的遍历,有多种不同的方法,下面对各种方法进行比较:Array.prototype.max=function(){


Array.prototype.max=function(){
let max=this[];
this.forEach(function(item,index){
if(item>max){
max=item;
}
});
return max;
}
var arr = [,,,,,,,,,,,];
console.time("费时");
console.log(arr.max()); //
console.timeEnd("费时"); // 费时:0.376ms
// ================================================ //
Array.prototype.max=function(){
let max=this[];
this.map(function(item,index){
if(item>max){
max=item;
}
});
return max;
}
var arr = [,,,,,,,,,,,];
console.time("费时");
console.log(arr.max()); //
console.timeEnd("费时"); // 费时: 0.402ms // ================================================= //
Array.prototype.max=function(){
let max=this[];
for(var i=;i<this.length;i++){
if(this[i]>max){
max=this[i];
}
}
return max;
}
var arr = [,,,,,,,,,,,];
console.time("费时");
console.log(arr.max()); //
console.timeEnd("费时"); // 费时: 0.522ms
  我们来看看如果数组中不全是数值的会是怎样的?
var arr = [1,45,23,3,6,2,7,234,56,'2345',5,'a',1000];
arr.max(); // "a"
['a',1000,'c'].max(); // "c"
[1000,'a'].max(); //
  咦,结果好像不是我们想要的,经过测试,我觉得数值和字符的大小比较是一下的规则:
    ① 如果两个数都是数值的时候,按照普通的数值比较方法
    ② 如果两个数都是字符串,则两个字符串从高位逐位开始比较,根据ASCLL码的大小比较;
      英文字母>数字,小写字母>大写字母 
    【注】字符转ascii码:用charCodeAt();
  1. "A".charCodeAt(); //
    "a".charCodeAt(); //
    ③ 如果一个是字符串,一个是数值,则将数值转换为字符串,按照两个字符串的大小比较方法比较
 
法三: 还可以使用Array.prototype.reduce 方法进行遍历,使用此法,无需添加额外的 max 变量
Array.prototype.max=function(){

  return arr.reduce(function(prev,next){
return prev>next?prev:next;
});
}
var arr = [1,45,23,3,6,2,7,234,56,222,34444,9];
console.time("费时");
console.log(arr.max()); //
console.timeEnd("费时"); // 费时: 0.389ms

求数组最小值的就不再多说了,同理易得~

总结

  上面求数组的最值最简单的还是法一,剩下的都是遍历数组,对于数组的遍历也要选择好方法,不同的遍历方法性能不同,其中 Array.prototype.map虽然使用起来优雅,但是实际性能并不会比forEach好,具体的还是示情况而定吧

使用JavaScript·求数组的最大值和最小值的更多相关文章

  1. JavaScript 获取数组的最大值和最小值

    js获取数组最大值和最小值 使用apply方法: var a = [1,2,3,5]; console.log(Math.max.apply(null, a));//最大值 console.log(M ...

  2. JavaScript 获取数组中最大值、最小值

    笨方法 Array.prototype.max = function() { var max = this[0]; var len = this.length; for (var i = 1; i & ...

  3. JS创建一个数组1.求和 2.求平均值 3.最大值 4.最小值 5.数组逆序 6.数组去重 0.退出

    rs = require("readline-sync"); let arr = []; console.log("请输入数组的长度:"); let arr_l ...

  4. JavaScript学习:取数组中最大值和最小值

    在实际业务中有的时候要取出数组中的最大值或最小值.但在数组中并没有提供arr.max()和arr.min()这样的方法.那么是不是可以通过别的方式实现类似这样的方法呢?那么今天我们就来整理取出数组中最 ...

  5. Javascript获取数组中最大和最小值

    取出数组中最大值或最小值是开发中常见的需求,今天继续讲解如何获取javascript数组中最大和最小值. 1.排序法 首先我们给数组进行排序,可以按照从小到大的顺序来排,排序之后的数组中第一个和最后一 ...

  6. js求数组的最大值--奇技淫巧和笨方法

    写这篇文章的原因 我目前做的项目很少用到算法,于是这方面的东西自然就有点儿生疏.最近的一次编码中遇到了从数组中获取最大值的需求,当时我不自觉的想到了js的sort()函数,现在想来真是有些“罪过”,当 ...

  7. c# 求数组的最大值

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. YTU 2642: 填空题:类模板---求数组的最大值

    2642: 填空题:类模板---求数组的最大值 时间限制: 1 Sec  内存限制: 128 MB 提交: 646  解决: 446 题目描述   类模板---求数组的最大值    找出一个数组中的元 ...

  9. 转载——JavaScript学习笔记:取数组中最大值和最小值

    转载自:http://www.w3cplus.com/javascript/calculate-the-max-min-value-from-an-array.html. 取数组中最大值 可以先把思路 ...

随机推荐

  1. 第6章 事务管理 6.1 spring事务

    事务管理——原子性.一致性.隔离性.持久性 理解spring对事务管理的支持 Spring提供对编码式和声明式事务管理的支持.编码式事务允许用户在代码中精确定义事务的边界,而声明式事务(基于AOP,面 ...

  2. ValueError: Error when checking input: expected input_1 to have 2 dimensions, but got array with shape (100, 100, 100, 3)

    报错 Traceback (most recent call last): File "D:/PyCharm 5.0.3/WorkSpace/3.Keras/1.Sequential与Mod ...

  3. 你真的了解MyBatis中${}和#{}的区别吗?

    动态sql是mybatis的主要特性之一.在mapper中定义的参数传到xml中之后,在查询之前mybatis会对其进行动态解析. mybatis提供了两种支持动态sql的语法:#{} 和 ${}. ...

  4. 福建工程学院16级第一周寒假作业E题----第七集,奇思妙想

    第七集,奇思妙想                                                                                            ...

  5. CodeForces round 520 div2

    A:A Prank 题意:给定一个递增序列, 问最多能删除多少个连续数字,要求删除数字之后能还原成原来的数列. 题解:直接找就好了,为了方便可以使得第0个数字为0, 第n+1个元素为1001 代码: ...

  6. CF 988C Equal Sums 思维 第九题 map

    Equal Sums time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...

  7. IDEA中的各种快捷键

    1.get.set快捷键: Alt+Insert 2.idea补全返回值快捷键 比如写了一个new User(),需要补全前面的User user ctrl+alt+V 3.idea全局搜索: Ctr ...

  8. Django之模型层(2)

    Django之模型层(2) 一.创建模型 实例:我们来假定下面这些概念,字段和关系. 作者模型:一个作者由姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情 ...

  9. GO 语言学习笔记--数组切片篇

    1.对于make 数组切片,长度和容量需要理解清楚: 容量表示底层数组的大小,长度是你可以使用的大小: 容量的用处在哪?在与当你用 appen d扩展长度时,如果新的长度小于容量,不会更换底层数组,否 ...

  10. python常用内建模块——datetime

    datetime是python处理日期和时间的标准库. 获取当前日期和时间 >>>from datetime import datetime >>>now = da ...