我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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 数组最大值和最小值内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

javascript如何实现数组最大值和最小值

小编给大家分享一下javascript如何实现数组最大值和最小值,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!给定一个数组[1,8,5,4,3,9,2],编写一个
2023-06-15

JavaScript如何找出数组的最大值和最小值

这篇文章将为大家详细讲解有关JavaScript如何找出数组的最大值和最小值,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。找出数组的最大值和最小值可以使用for循环遍历数组的每个值,从而找到最大值或最小值
2023-06-27

php怎么求数组最大值和最小值的差值

求差值的步骤:1、使用max()函数获取数组最大值,语法“max($arr)”;2、使用min()函数获取数组最小值,语法“min($arr)”;3、使用“-”运算符将获取的最大值和最小值相减计算差值即可,语法“最大值 - 最小值”。本教程操作环境:windows7系统、PHP8.1版、DELL G3电脑php求数组最大值和最小值的差值的方法在PHP中,可以利用max()和min()函数求数组最大值
2022-07-07

如何求php数组的最大值和最小值

这篇文章主要介绍“如何求php数组的最大值和最小值”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何求php数组的最大值和最小值”文章能帮助大家解决问题。两种方法:1、用“max(数组)”语句获取最
2023-06-30

php如何求数组最大值和最小值的差值

本文小编为大家详细介绍“php如何求数组最大值和最小值的差值”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何求数组最大值和最小值的差值”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。求差值的步骤:1、使用
2023-07-02

php怎么输出数组的最大值和最小值

要输出数组的最大值和最小值,可以使用PHP内置的max()和min()函数。示例代码如下:```php$arr = [1, 2, 3, 4, 5];$maxValue = max($arr);$minValue = min($arr);ec
2023-10-10

java求最大值和最小值的方法是什么

在Java中,可以使用以下方法来求最大值和最小值:求最大值:int[] nums = {3, 6, 2, 8, 4};int max = Arrays.stream(nums).max().getAsInt();System.out.
java求最大值和最小值的方法是什么
2024-03-07

c++怎么求数组的最大和最小值

本篇内容主要讲解“c++怎么求数组的最大和最小值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“c++怎么求数组的最大和最小值”吧!求数组元素最大最小值函数#include#i
2023-07-02

js如何查找json数据中的最大值和最小值方法

这篇文章主要介绍了js如何查找json数据中的最大值和最小值方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-05-16

r语言怎么获取数组中的最大值和最小值

在R语言中,可以使用max()函数和min()函数来获取数组中的最大值和最小值。例如,假设有一个包含一组数字的数组x,要获取该数组中的最大值和最小值,可以使用以下代码:x <- c(1, 2, 3, 4, 5)max_value <-
r语言怎么获取数组中的最大值和最小值
2024-03-06

linux shell实现求一个多维数组中的最大和最小值

同事发了一道shell题,是求一个多维数组中的最大和最小值 如文件 99file:33 55 23 56 99 234 234 545 6546 34 11 4
2022-06-04

编程热搜

目录