javascript实现数组最大值和最小值的6种方法

给定一个数组[1,8,5,4,3,9,2],编写一个算法,得到数组的最大值 9,和最小值 1。

1、通过prototype属性扩展min()函数和max()函数

算法1的思路是在自定义min()和max()函数中,通过循环由第一个值依次与后面的值作比较,动态更新最大值和最小值,从而找到结果。

        // 最小值
        Array.prototype.min = function () {
            let min = this[0];
            let len = this.length;
            for (let i = 1; i < len; i++) {
                if (this[i] < min) min = this[i]
            }
            return min
        }
        // 最大值
        Array.prototype.max = function () {
            let max = this[0];
            let len = this.length;
            for (let i = 1; i < len; i++) {
                if (this[i] > max) max = this[i]
            }
            return max
        }
        // 结果
        console.log(arr.min()); // 1
        console.log(arr.max()); // 9

2、借助Math对象的min()函数和max()函数

算法2的主要思路是通过apply()函数改变函数的执行体,将数组作为参数传递给apply()函数。这样数组就可以直接调用Math对象的min()函数和max()函数来获取返回值。

        Array.min = function(array) {
            return Math.min.apply(Math, array)
        }
        // 最大值
        Array.max = function (array) {
            return Math.max.apply(Math, array)
        }
        // 结果
        console.log(Array.min(arr)); // 1
        console.log(Array.max(arr)); // 9

3、算法2的优化

在算法2中将min()函数和max()函数作为Array类型的静态函数,但不支持链式调用,我们可以利用对象字面量进行简化。

        // 最小值
        Array.prototype.min = function() {
            return Math.min.apply({}, this)
        }
        // 最大值
        Array.prototype.max = function () {
            return Math.max.apply({}, this)
        }
        // 结果
        console.log(arr.min()); // 1
        console.log(arr.max()); // 9

与算法2不同的是,在验证时,因为min()函数和max()函数属于实例方法,所以可以直接通过数组调用。
上面的算法代码中apply()函数传入的第一个值为{},实际表示当前执行环境的全局对象。第二个参数this指向需要处理的数组。
由于apply函数的特殊性第一个参数,指定为 null 或 undefined 时会自动替换为指向全局对象,原始值会被包装。所以我们也可以将第一个参数设置为null、undefind。

4、借助Array类型的reduce()函数

算法4的主要思想是reduce()函数不设置initialValue初始值,将数组的第一个元素直接作为回调函数的第一个参数,依次与后面的值进行比较。当需要找最大值时,每轮累加器返回当前比较中大的值;当需要找最小值时,每轮累加器返回当前比较中小的值。

        // 最小值
        Array.prototype.min = function () {
            return this.reduce((pre, cur) => {
                return pre < cur ? pre : cur
            })
        }
        // 最大值
        Array.prototype.max = function () {
            return this.reduce((pre, cur) => {
                return pre > cur ? pre : cur
            })
        }
        // 结果
        console.log(arr.min()); // 1
        console.log(arr.max()); // 9

5、借助Array类型的sort()函数

算法5的主要思想时借助数组的原生sort()函数对数组进行排序,排序完成后首尾元素即是数组的最小、最大元素。
默认的sort()函数在排序时时按照字母顺序排序的,数字会被按照字符串处理。例如数字 18 会被当做"18"处理,数字 6 被当"6"来处理,在排序时是按照字符串的每一位进行比较的,因为"1"比"6"要小,所以"11"排序时要比"6"小。对于数值类型的数组来说,这显然不合理。所以我们需要进行自定义排序。

        let sortArr = arr.sort((a, b) => a - b)
        // 最小值
        sortArr[0]
        // 最大值
        sortArr[sortArr.length - 1]
        // 结果
        console.log(sortArr[0]); // 1
        console.log(sortArr[sortArr.length - 1]); // 9

6、借助ES6的扩展运算符

        // 最小值
        Math.min(...arr)
        // 最大值
        Math.max(...arr)
        // 结果
        console.log(Math.min(...arr)); // 1
        console.log(Math.max(...arr)); // 9

到此这篇关于javascript实现数组最大值和最小值的6种方法的文章就介绍到这了,更多相关javascript 数组最大值和最小值内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 求js数组的最大值和最小值的四种方法

    给定数组[54,65,43,21,12,34,45,58,97,24],求其最大值和最小值? 定义数组 var ary = [54,65,43,21,12,34,45,58,97,24]; 1.字符串拼接法 利用toString和join把数组转换为字符串,再和Math的max和min方法分别进行拼接,最后执行eval方法 var maxN = eval("Math.max(" + ary.toString() + ")"); var minN = eval(&qu

  • JS获取数组最大值、最小值及长度的方法

    本文实例讲述了JS获取数组最大值.最小值及长度的方法.分享给大家供大家参考,具体如下: //最小值 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()

  • JavaScript获取数组最小值和最大值的方法

    本文实例讲述了JavaScript获取数组最小值和最大值的方法.分享给大家供大家参考.具体如下: var arr = new Array(); arr[0] = 100; arr[1] = 0; arr[2] = 50; var min = Math.min.apply(null, arr), max = Math.max.apply(null, arr); 以下是补充: var a=[1,2,3,5]; alert(Math.max.apply(null, a));//最大值 alert(Ma

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

    推荐阅读:JavaScript学习笔记之数组的增.删.改.查 JavaScript学习笔记之数组求和方法 JavaScript学习笔记之数组随机排序 在实际业务中有的时候要取出数组中的最大值或最小值.但在数组中并没有提供arr.max()和arr.min()这样的方法.那么是不是可以通过别的方式实现类似这样的方法呢?那么今天我们就来整理取出数组中最大值和最小值的一些方法. 取数组中最大值 可以先把思路理一下: 将数组中第一个元素赋值给一个变量,并且把这个变量作为最大值: 开始遍历数组,从第二个元

  • Javascript获取数组中的最大值和最小值的方法汇总

    比较数组中数值的大小是比较常见的操作,比较大小的方法有多种,比如可以使用自带的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

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

    本文实例讲述了JavaScript实现的伸展收缩型菜单代码.分享给大家供大家参考.具体如下: 运行效果截图如下: 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/199

  • JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法

    今天在学习js中的数组时,遇到的输出一个数组中最大.最小值以及它们的下表,以下是自己的解决方法! <script type="text/javascript"> var arr = [14, 14, 53, 14, 14, 53, 67, 67]; var max = arr[0],min = arr[0]; var maxIndex = []; maxIndex[0] = 0; var minIndex = []; minIndex[0] = 0; var j = 1,

  • JavaScript遍历查找数组中最大值与最小值的方法示例

    本文实例讲述了JavaScript遍历查找数组中最大值与最小值的方法.分享给大家供大家参考,具体如下: <script language="javascript"> // 查找数组中最小值 function mathMin(arrs){ var min = arrs[0]; for(var i = 1, ilen = arrs.length; i < ilen; i+=1) { if(arrs[i] < min) { min = arrs[i]; } } ret

  • JS实现获取数组中最大值或最小值功能示例

    本文实例讲述了JS实现获取数组中最大值或最小值功能.分享给大家供大家参考,具体如下: 方法一: //最小值 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; } console.log([55,38,7,19].min()); //最大值 Ar

  • javascript实现数组最大值和最小值的6种方法

    给定一个数组[1,8,5,4,3,9,2],编写一个算法,得到数组的最大值 9,和最小值 1. 1.通过prototype属性扩展min()函数和max()函数 算法1的思路是在自定义min()和max()函数中,通过循环由第一个值依次与后面的值作比较,动态更新最大值和最小值,从而找到结果. // 最小值 Array.prototype.min = function () { let min = this[0]; let len = this.length; for (let i = 1; i

  • 找到整型阵列中最大值和最小值的几种方法总结

    在整型阵列中,我们需要从中获取阵列元素的最大值和最小值: 方法一:先是使用Array进行排序,然后从排序后数组中,最一个元素为最小,最后一个元素为最大. Source Code public static int FindMaxNumber(params int[] stringValue) { Array.Sort(stringValue); return stringValue[stringValue.Length -1]; } public static int FindMinNumber

  • JavaScript实现数组在指定位置插入若干元素的方法

    本文实例讲述了JavaScript实现数组在指定位置插入若干元素的方法.分享给大家供大家参考.具体如下: 我们可以通过JS数组的splice方法在执行的位置插入新的元素,非常简单 <!DOCTYPE html> <html> <body> <p id="demo"> Click the button to add elements to the array. </p> <button onclick="myFu

  • JavaScript从数组中删除指定值元素的方法

    本文实例讲述了JavaScript从数组中删除指定值元素的方法.分享给大家供大家参考.具体分析如下: 下面的代码使用了两种方式删除数组的元素,第一种定义一个单独的函数,第二种为Array对象定义了一个removeByValue的方法,调用非常简单 定义函数removeByValue进行元素删除 function removeByValue(arr, val) { for(var i=0; i<arr.length; i++) { if(arr[i] == val) { arr.splice(i,

  •  javascript学数组中的foreach方法和some方法

    目录 一.foreach方法 1直接vs打开 2代码部分 二.some方法 1直接vs打开 2代码部分 3总结 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说foreach和some的使用​​不多说把代码编辑器打开​​ 一.foreach方法 1直接vs打开 2代码部分 var geyao = ['歌谣', '很帅', '很强']   geyao.forEach((currentValue, index, arr, thisValue) => {     console.lo

  • JavaScript实现数字前补“0”的五种方法示例

    本文实例讲述了JavaScript实现数字前补"0"的五种方法.分享给大家供大家参考,具体如下: 众所周知JavaScript中的数字是没有前置0的,因此需要我们自己进行操作来添加前置0,而且还得转换成字符串. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&q

  • Javascript定义类(class)的三种方法详解

    将近20年前,Javascript诞生的时候,只是一种简单的网页脚本语言.如果你忘了填写用户名,它就跳出一个警告. 如今,它变得几乎无所不能,从前端到后端,有着各种匪夷所思的用途.程序员用它完成越来越庞大的项目. Javascript代码的复杂度也直线上升.单个网页包含10000行Javascript代码,早就司空见惯.2010年,一个工程师透露,Gmail的代码长度是443000行! 编写和维护如此复杂的代码,必须使用模块化策略.目前,业界的主流做法是采用"面向对象编程".因此,Ja

随机推荐