日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/9/27 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二分法求数组最大最小_js-求数组的最大值和最小值 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

取出數(shù)組中的最大值或者最小值是開發(fā)中常見的需求,但你能想出幾種方法來實(shí)現(xiàn)這個(gè)需求呢?

Math.max

JavaScript 提供了 Math.max 函數(shù)返回一組數(shù)中的最大值,用法是:

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

值得注意的是:

  • 如果有任一參數(shù)不能被轉(zhuǎn)換為數(shù)值,則結(jié)果為 NaN。
  • max 是 Math 的靜態(tài)方法,所以應(yīng)該像這樣使用:Math.max(),而不是作為 Math 實(shí)例的方法 (簡單的來說,就是不使用 new )
  • 如果沒有參數(shù),則結(jié)果為 -Infinity (注意是負(fù)無窮大)
  • 而我們需要分析的是:

    1.如果任一參數(shù)不能被轉(zhuǎn)換為數(shù)值,這就意味著如果參數(shù)可以被轉(zhuǎn)換成數(shù)字,就是可以進(jìn)行比較的,比如:

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

    2.如果沒有參數(shù),則結(jié)果為 -Infinity,對應(yīng)的,Math.min 函數(shù),如果沒有參數(shù),則結(jié)果為 Infinity,所以:

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

    了解了 Math.max 方法,我們以求數(shù)組最大值的為例,思考有哪些方法可以實(shí)現(xiàn)這個(gè)需求。

    原始方法

    最最原始的方法,莫過于循環(huán)遍歷一遍:

    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

    既然是通過遍歷數(shù)組求出一個(gè)最終值,那么我們就可以使用 reduce 方法:

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

    排序

    如果我們先對數(shù)組進(jìn)行一次排序,那么最大值就是最后一個(gè)值:

    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 支持傳多個(gè)參數(shù)來進(jìn)行比較,那么我們?nèi)绾螌⒁粋€(gè)數(shù)組轉(zhuǎn)換成參數(shù)傳進(jìn) Math.max 函數(shù)呢?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 的擴(kuò)展運(yùn)算符:

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

    總結(jié)

    以上是生活随笔為你收集整理的二分法求数组最大最小_js-求数组的最大值和最小值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。