JavaScript学习笔记:取数组中最大值和最小值

特别声明:为感谢社区广大朋友对小站的支持,自2019年10月1日至2019年11月11日开通年费VIP通道,年费价格为 ¥299.00元。如果您喜欢小站的内容,可以点击开通会员进行全站阅读。如果您对付费阅读有任何建议或想法,欢迎发送邮件至: airenliao@gmail.com!(^_^)

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

取数组中最大值

可以先把思路理一下:

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

代码如下:

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;
}

来看一个示例:

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) {
            max = ele;
        }
    })
    return max;
}
var arr = [1,45,23
剩余80%内容付费后可查看

如需转载,烦请注明出处:https://www.w3cplus.com/javascript/calculate-the-max-min-value-from-an-array.html

如果文章中有不对之处,烦请各位大神拍正。如果你觉得这篇文章对你有所帮助,打个赏,让我有更大的动力去创作。(^_^)。看完了?还不过瘾?点击向作者提问!

赏杯咖啡,鼓励他创作更多优质内容!
返回顶部