javascript中查找数组最大值和最小值最直接方式是math.max(...arr)和math.min(...arr),但需确保数组非空且元素为有效数字;空数组或混合类型时应先过滤再计算,或用reduce手动遍历以增强健壮性。

JavaScript 中查找数组最大值和最小值,最直接的方式是使用内置的 Math.max() 和 Math.min() 配合展开运算符(...)或 apply,但要注意空数组或非数字元素的边界情况。
用 Math.max() / Math.min() + 展开运算符(推荐)
这是现代 JavaScript 中最简洁、可读性最好的方式,适用于纯数字数组:
- 写法:
Math.max(...arr)和Math.min(...arr) - 要求:数组不能为空,否则会报
NaN(因为Math.max()无参数时返回-Infinity,Math.min()返回Infinity,但展开空数组相当于没传参) - 示例:
const nums = [3, 7, 1, 9, 4];<br>const max = Math.max(...nums); // 9<br>const min = Math.min(...nums); // 1
处理空数组或混合类型的安全写法
实际项目中数组可能为空、含 null/undefined/字符串等,需预处理:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- 先过滤出有效数字:
arr.filter(x => typeof x === 'number' && !isNaN(x)) - 再判断长度,避免展开空数组:
const validNums = arr.filter(x => typeof x === 'number' && isFinite(x));<br>const max = validNums.length ? Math.max(...validNums) : undefined;
- 也可用
reduce手动遍历,更可控:const max = arr.reduce((a, b) => (typeof b === 'number' && isFinite(b)) ? Math.max(a, b) : a, -Infinity);
兼容旧环境:用 apply 替代展开运算符
IE 或早期 Node.js 不支持展开运算符时,可用 Function.prototype.apply:
- 写法:
Math.max.apply(null, arr)和Math.min.apply(null, arr) - 注意:
apply对超大数组(如 >10 万项)可能触发“栈溢出”,此时应改用循环或reduce - 同样需要校验空数组:
arr.length ? Math.max.apply(null, arr) : undefined
性能与适用场景小结
多数场景下,Math.max(...arr) 足够快且简洁;若数组极大或含脏数据,优先用带校验的 reduce 方案,逻辑清晰、内存友好、错误可控。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










