二分法求数组最大最小_js-求数组的最大值和最小值
生活随笔
收集整理的這篇文章主要介紹了
二分法求数组最大最小_js-求数组的最大值和最小值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
取出數組中的最大值或者最小值是開發中常見的需求,但你能想出幾種方法來實現這個需求呢?
Math.max
JavaScript 提供了 Math.max 函數返回一組數中的最大值,用法是:
Math.max([value1[,value2, ...]])值得注意的是:
而我們需要分析的是:
1.如果任一參數不能被轉換為數值,這就意味著如果參數可以被轉換成數字,就是可以進行比較的,比如:
Math.max(true, 0) // 1Math.max(true, '2', null) // 2Math.max(1, undefined) // NaNMath.max(1, {}) // NaN2.如果沒有參數,則結果為 -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))總結
以上是生活随笔為你收集整理的二分法求数组最大最小_js-求数组的最大值和最小值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux比较两台时间,两台linux机
- 下一篇: 启动metabase_引入开源BI软件M