二分法求数组最大最小_js-求数组的最大值和最小值

b2c12a6b90e54bc4a24c2a8a744fb968

取出数组中的最大值或者最小值是开发中常见的需求,但你能想出几种方法来实现这个需求呢?

Math.max

JavaScript 提供了 Math.max 函数返回一组数中的最大值,用法是:

Math.max([value1[,value2, ...]])

值得注意的是:

  1. 如果有任一参数不能被转换为数值,则结果为 NaN。
  2. max 是 Math 的静态方法,所以应该像这样使用:Math.max(),而不是作为 Math 实例的方法 (简单的来说,就是不使用 new )
  3. 如果没有参数,则结果为 -Infinity (注意是负无穷大)

而我们需要分析的是:

1.如果任一参数不能被转换为数值,这就意味着如果参数可以被转换成数字,就是可以进行比较的,比如:

Math.max(true, 0) // 1Math.max(true, '2', null) // 2Math.max(1, undefined) // NaNMath.max(1, {}) // NaN

2.如果没有参数,则结果为 -Infinity,对应的,Math.min 函数,如果没有参数,则结果为 Infinity,所以:

var min = Math.min();var max = Math.max();console.log(min > max);

了解了 Math.max 方法,我们以求数组最大值的为例,思考有哪些方法可以实现这个需求。

原始方法

最最原始的方法,莫过于循环遍历一遍:

var arr = [6, 4, 1, 8, 2, 11, 23];var result = arr[0];for (var i = 1; i < arr.length; i++) { result = Math.max(result, arr[i]);}console.log(result);

reduce

既然是通过遍历数组求出一个最终值,那么我们就可以使用 reduce 方法:

var arr = [6, 4, 1, 8, 2, 11, 23];function max(prev, next) { return Math.max(prev, next);}console.log(arr.reduce(max));

排序

如果我们先对数组进行一次排序,那么最大值就是最后一个值:

var arr = [6, 4, 1, 8, 2, 11, 23];arr.sort(function(a,b){return a - b;});console.log(arr[arr.length - 1])

eval

Math.max 支持传多个参数来进行比较,那么我们如何将一个数组转换成参数传进 Math.max 函数呢?eval 便是一种

var arr = [6, 4, 1, 8, 2, 11, 23];var max = eval("Math.max(" + arr + ")");console.log(max)

apply

使用 apply 是另一种。

var arr = [6, 4, 1, 8, 2, 11, 23];console.log(Math.max.apply(null, arr))

ES6 ...

使用 ES6 的扩展运算符:

var arr = [6, 4, 1, 8, 2, 11, 23];console.log(Math.max(...arr))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TailwindCSS v3.0 正式发布!一大波新特性来袭!

作者 | 一只图雀来源 | 程序员巴士今天给大家介绍一篇关于 Tailwind 最新发布的 v3.0 相关的内容。2021 年 12 月 10 日&#xff0c;TailwindCSS 的创始人 Adam Wathan 宣布 TailwindCSS v3.0 正式发布&#xff0c;带来了一系列性能上的改进、对开发工作流的改善以及大量的新特…

曦智科技发布最新光子计算处理器PACE

成功验证光子计算优越性&#xff0c;以光子技术突破集成电路产业边界 2021年12月15日&#xff0c;全球领先的光子计算芯片公司曦智科技&#xff08;Lightelligence&#xff09;发布了其最新高性能光子计算处理器——PACE&#xff08;Photonic Arithmetic Computing Engine&…

python 下载图片到内存卡_python - 获取图像大小而不将图像加载到内存中

如果您不关心图像内容&#xff0c;PIL可能是一种过度杀伤力。我建议解析python magic模块的输出&#xff1a;>>> t magic.from_file(teste.png)>>> tPNG image data, 782 x 602, 8-bit/color RGBA, non-interlaced>>> re.search((\d) x (\d), t).g…

搭载第四代自研神龙架构 阿里云发布RDMA增强型实例等多款新品

12月21日消息&#xff0c;阿里云发布多款基于自研神龙架构的弹性计算新品&#xff0c;包括RDMA增强型实例、800G GPU超算实例、FPGA计算型实例、GPU图形计算型实例等&#xff0c;在性能方面大幅提升&#xff0c;同时增加了多种服务形态&#xff0c;将计算延伸至客户身边&#x…

最新光子计算处理器面世:单个光子芯片集成超万个光子器件,频率达1GHz

12月15日&#xff0c;光子计算芯片公司曦智科技&#xff08;Lightelligence&#xff09;发布了其最新高性能光子计算处理器&#xff1a;PACE&#xff08;Photonic Arithmetic Computing Engine&#xff0c;光子计算引擎&#xff09;。该处理器单个光子芯片中集成超过10,000个光…

Snowflake如日中天是否代表Hadoop已死?大数据体系到底是什么?

简介&#xff1a; 本文作者关涛是大数据系统领域的资深专家&#xff0c;在微软&#xff08;互联网/Azure云事业群&#xff09;和阿里巴巴&#xff08;阿里云&#xff09;经历了大数据发展20年过程中的后15年。本文试从系统架构的角度&#xff0c;就大数据架构热点&#xff0c;每…

金蝶携手工商银行完成首单数字人民币费用报销业务

2021年12月17日&#xff0c;金蝶业务系统成功完成首单使用数字人民币进行的公转私支付业务。据悉&#xff0c;这是中国工商银行股份有限公司&#xff08;以下简称“工商银行”&#xff09;第一笔使用“数字人民币银企直连”进行的公转私支付费用报销业务&#xff0c;也是金蝶成…

Java对象转换方案分析与mapstruct实践

简介&#xff1a; 随着系统模块分层不断细化&#xff0c;在Java日常开发中不可避免地涉及到各种对象的转换&#xff0c;如&#xff1a;DO、DTO、VO等等&#xff0c;编写映射转换代码是一个繁琐重复且还易错的工作&#xff0c;一个好的工具辅助&#xff0c;减轻了工作量、提升开…

致敬 hacker |盘点内存虚拟化探索之路

简介&#xff1a; 内存虚拟化相比裸机&#xff0c;仍然存在较大差异&#xff0c;是当下值得关注的问题&#xff01; 云与虚拟化 云计算是通过 Internet 服务的方式提供动态可伸缩资源的计算模式&#xff0c;经过多年的发展已成为企业 IT 技术的重要支撑。虚拟化是云计算的核心…

minwindow java_java中setMinWindowLayout()是什么呀?

展开全部分析代码 ,可以看出SInfo 是JFrame的子类.setMinWindowLayout() 方法,就可能就是该类自定义的方法,因为JFrame并没e68a8462616964757a686964616f31333431373937有该方法.根据该方法名推测, 这个方法应该就是设置界面布局的方法,主要用于调整组件(按钮,输入框...等)的位…

走进新华三解决方案 360°业务能力中心,读懂新华三如何助力企业数字化转型

随着数字化转型步入“深水区”&#xff0c;云计算、5G、AI 等新一代技术落地应用各行各业。企业对“端到端”解决方案的需求愈发强烈&#xff0c;亟待统一规划、建设和交付的“端到端”解决方案。对此&#xff0c;作为业界领先的数字化解决方案领导者&#xff0c;新华三自 2019…

阿里云马涛:什么是操作系统的云原生?

简介&#xff1a; 云原生已经成为IT界最流行的一个定语&#xff0c;似乎不谈云原生就out了&#xff0c;但什么才是真正的云原生&#xff1f; 注&#xff1a;本文作者马涛&#xff0c;阿里云智能研究员、阿里巴巴集团内核团队创始人之一、阿里云基础软件部操作系统团队负责人。…

pip 安装_安装 pip 轻松管理 PyPI 软件包 | Linux 中国

在 Linux、Mac 或 Windows 上为旧版 Python 安装 pip。-- Vijay Singh KhatriPython 是一种功能强大、流行广泛的编程语言&#xff0c;在常规编程、数据科学等很多方面它都有丰富的软件包可供使用。但这些软件包通常都不会在 Python 安装时自动附带&#xff0c;而是需要由用户自…

技术解析:一文看懂 Anolis OS 国密生态 | 龙蜥专场

简介&#xff1a; Anolis OS国密是社区在Anolis OS上做的国密技术解决方案。 编者注&#xff1a;本文系两位演讲者整理&#xff0c;他们在2021年阿里云开发者大会的「开源操作系统社区和生态分论坛」上带了分享&#xff0c;演讲主题为《国密技术开发与实践》&#xff0c;为国内…

场景联创 施耐德电气“绿色智能制造创赢计划”第二季收官

中国上海&#xff0c;2021年12月21日——今日&#xff0c;由工业和信息化部国际经济技术合作中心&#xff08;工信部国合中心&#xff09;与施耐德电气主办的“绿色智能制造创赢计划”第二季总决赛在上海举办。经过半年多的加速营培训、场景探访与联合方案开发&#xff0c;最终…

DLF +DDI 一站式数据湖构建与分析最佳实践

简介&#xff1a; 本文由阿里云数据湖构建 DLF 团队和 Databricks 数据洞察团队联合撰写&#xff0c;旨在帮助您更深入地了解阿里云数据湖构建&#xff08;DLF&#xff09;Databricks 数据洞察&#xff08;DDI&#xff09;构建一站式云上数据入湖。 作者陈鑫伟&#xff08;熙康…

pip升级python包命令_python安装扩展库常用的是什么工具

pip 是 Python 包管理工具&#xff0c;该工具提供了对Python 包的查找、下载、安装、卸载的功能。目前如果你在 http://python.org 下载最新版本的安装包&#xff0c;则是已经自带了该工具。Python 2.7.9 或 Python 3.4 以上版本都自带 pip 工具。pip 官网&#xff1a;https:/…

获国际架构顶会ATC2021最佳论文!Fuxi2.0去中心化的调度架构详解

简介&#xff1a; 近日&#xff0c;在国际体系架构顶会USENIX ATC2021上&#xff0c;阿里云飞天伏羲团队与香港中文大学合作的一篇论文《Scaling Large Production Clusters with Partitioned Synchronization》不仅成功被大会录取&#xff0c;而且被大会专家组评定为三篇最佳论…

svg入门经典pdf_机器学习最好的入门课程是什么?

最近老胡不太忙了&#xff0c;项目告一段落&#xff0c;摸鱼时间多了一些。昨天我翻译了一个思维导图《超详细的人工智能专家路线图》强烈建议没有看的同学看一看&#xff0c;查漏补缺必备机器学习从 入 门 到 精 通 路 线 图翻完之后自己也有很大的收获&#xff0c;所以准备干…

MaxCompute跨境访问加速解决方案

简介&#xff1a; MaxCompute联合全球加速服务&#xff0c;为有跨境访问需求的MaxCompute客户提供一套高效稳定的跨境访问加速方案。 MaxCompute联合全球加速服务&#xff0c;为有跨境访问需求的MaxCompute客户提供一套高效稳定的跨境访问加速方案。 背景信息 MaxCompute的大…