Javascript获取数组中最大和最小值方法

  1. 使用 Math 中的 max/min 方法
var arr = [22,13,6,55,30];

var max = Math.max.apply(null, arr);
var min = Math.min.apply(null, arr);

console.log(max, min) // 55,6
  1. 数组的 sort 方法排序
var arr = new Array(6);
arr[0] = "10";
arr[1] = "5";
arr[2] = "40";
arr[3] = "25";
arr[4] = "1000";
arr[5] = "1";
console.log(arr);
console.log(arr.sort(sortNumber));
console.log(arr.sort((a,b)=>a-b)) // 箭头函数写法
var min = arr[0]; 

var max = arr[arr.length - 1]; 
console.log(arr.sort(sortNumber2));
console.log(arr.sort((a,b)=>b-a)) // 箭头函数写法


// [ '10', '5', '40', '25', '1000', '1' ]
// [ '1', '5', '10', '25', '40', '1000' ]
// [ '1', '5', '10', '25', '40', '1000' ]
// [ '1000', '40', '25', '10', '5', '1' ]
// [ '1000', '40', '25', '10', '5', '1' ]
 */
  1. for 循环数组判断
// 获取最大值:

var arr = [22,13,6,55,30];
var max = arr[0];

for(var i = 1; i < arr.length; i++) {
   var cur = arr[i];
   cur > max ? max = cur : null
}

console.log(max); // 55

// 获取最小值:

var arr = [22,13,6,55,30];
var min = arr[0];

for(var i = 1; i < arr.length; i++) {
  var cur = arr[i];
  cur < min ? min = cur : null
}
console.log(min)  // 6

转载于:https://my.oschina.net/ytyjm/blog/3051367

### 空间复杂度最优的 JavaScript 数组最大值和最小值获取方法JavaScript 中,获取数组的最大值和最小值时,若要追求空间复杂度最优,则需要避免使用扩展运算符 `...` 或其他可能增加额外内存占用的方法。以下是一种基于手动遍历数组的方式,其空间复杂度为 O(1),时间复杂度为 O(n)。 #### 方法实现 通过一次遍历数组,同时记录最大值和最小值,可以有效减少内存消耗并提高效率。 ```javascript function getMaxMinByTraversal(arr) { if (arr.length === 0) return [null, null]; // 处理空数组的情况 let max = arr[0]; let min = arr[0]; for (let i = 1; i < arr.length; i++) { if (arr[i] > max) max = arr[i]; if (arr[i] < min) min = arr[i]; } return [max, min]; } const arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]; const [max, min] = getMaxMinByTraversal(arr); console.log(`最大值: ${max}, 最小值: ${min}`); ``` #### 复杂度分析 - **时间复杂度**:O(n),其中 n 是数组的长度。该算法仅需遍历数组一次即可完成最大值和最小值的查找。 - **空间复杂度**:O(1),因为该算法只使用了固定数量的变量(`max` 和 `min`),而未创建任何与输入规模相关的额外数据结构[^1]。 #### 与其他方法的对比 1. 使用 `Math.max` 和 `Math.min` 结合扩展运算符的方法虽然代码简洁,但其空间复杂度为 O(n),因为在内部会将数组展开为独立参数传递给函数[^2]。 2. 手动遍历方法避免了扩展运算符带来的额外内存开销,因此在处理大规模数组时更具优势。 #### 注意事项 - 如果数组为空,则需要明确返回值的定义,例如 `[null, null]` 或抛出异常。 - 对于非常大的数组,扩展运算符可能导致栈溢出错误,而手动遍历方法则不会受到此限制。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值