国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript專題之如何求數(shù)組的最大值和最小值

zhaochunqi / 3208人閱讀

摘要:專題系列第八篇,講解多種方式求數(shù)組的最大值和最小值前言取出數(shù)組中的最大值或者最小值是開發(fā)中常見的需求,但你能想出幾種方法來實現(xiàn)這個需求呢提供了函數(shù)返回一組數(shù)中的最大值,用法是值得注意的是如果有任一參數(shù)不能被轉(zhuǎn)換為數(shù)值,則結(jié)果為。

JavaScritpt 專題系列第八篇,講解多種方式求數(shù)組的最大值和最小值

前言

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

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 實例的方法 (簡單的來說,就是不使用 new )

如果沒有參數(shù),則結(jié)果為 -Infinity (注意是負無窮大)

而我們需要分析的是:

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

Math.max(true, 0) // 1
Math.max(true, "2", null) // 2
Math.max(1, undefined) // NaN
Math.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ù)組最大值的為例,思考有哪些方法可以實現(xiàn)這個需求。

原始方法

最最原始的方法,莫過于循環(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ù)組求出一個最終值,那么我們就可以使用 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ù)組進行一次排序,那么最大值就是最后一個值:

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

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

有更多的方法歡迎留言哈~

專題系列

JavaScript專題系列目錄地址:https://github.com/mqyqingfeng/Blog。

JavaScript專題系列預(yù)計寫二十篇左右,主要研究日常開發(fā)中一些功能點的實現(xiàn),比如防抖、節(jié)流、去重、類型判斷、拷貝、最值、扁平、柯里、遞歸、亂序、排序等,特點是研(chao)究(xi) underscore 和 jQuery 的實現(xiàn)方式。

如果有錯誤或者不嚴謹?shù)牡胤剑垊?wù)必給予指正,十分感謝。如果喜歡或者有所啟發(fā),歡迎 star,對作者也是一種鼓勵。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/84114.html

相關(guān)文章

  • JavaScript專題系列文章

    摘要:專題系列共計篇,主要研究日常開發(fā)中一些功能點的實現(xiàn),比如防抖節(jié)流去重類型判斷拷貝最值扁平柯里遞歸亂序排序等,特點是研究專題之函數(shù)組合專題系列第十六篇,講解函數(shù)組合,并且使用柯里化和函數(shù)組合實現(xiàn)模式需求我們需要寫一個函數(shù),輸入,返回。 JavaScript 專題之從零實現(xiàn) jQuery 的 extend JavaScritp 專題系列第七篇,講解如何從零實現(xiàn)一個 jQuery 的 ext...

    Maxiye 評論0 收藏0
  • JavaScript專題系列20篇正式完結(jié)!

    摘要:寫在前面專題系列是我寫的第二個系列,第一個系列是深入系列。專題系列自月日發(fā)布第一篇文章,到月日發(fā)布最后一篇,感謝各位朋友的收藏點贊,鼓勵指正。 寫在前面 JavaScript 專題系列是我寫的第二個系列,第一個系列是 JavaScript 深入系列。 JavaScript 專題系列共計 20 篇,主要研究日常開發(fā)中一些功能點的實現(xiàn),比如防抖、節(jié)流、去重、類型判斷、拷貝、最值、扁平、柯里...

    sixleaves 評論0 收藏0
  • 2017-07-19 前端日報

    摘要:前端日報精選開發(fā)常見問題集錦前端碼農(nóng)的自我修養(yǎng)虛擬內(nèi)部是如何工作的譯知乎專欄并不慢,只是你使用姿勢不對一份優(yōu)化指南掘金老司機帶你秒懂內(nèi)存管理第一部中文免費公開課前端面試的大關(guān)鍵點,你到了嗎知乎專欄高效開發(fā)與設(shè)計姐的圖片二三 2017-07-19 前端日報 精選 VueJS 開發(fā)常見問題集錦 - 前端碼農(nóng)的自我修養(yǎng) - SegmentFault虛擬 DOM 內(nèi)部是如何工作的?[譯]Hig...

    iflove 評論0 收藏0
  • JS中數(shù)組最大最小匯總(持續(xù)更新)

    摘要:如何使用,在一個類型的數(shù)組里,查找最大或最小數(shù)呢以下介紹五個方法。利用代碼如下解釋方法就是通過一個函數(shù),針對一個累加器和數(shù)組中的每一個元素,將一個數(shù)組最終減少到一個值。如果求最小值,將改成。 如何使用JS,在一個Number類型的數(shù)組里,查找最大(或最小)數(shù)呢? 以下介紹五個方法。(如果有新方法,后續(xù)會更新,也歡迎各位留言提供新方法) 1. 不使用任何庫函數(shù) 代碼如下: functio...

    church 評論0 收藏0
  • 常用排序算法JavaScript實現(xiàn)

    摘要:代碼實現(xiàn)六堆排序算法簡介堆排序是指利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計的一種排序算法。九計數(shù)排序算法簡介計數(shù)排序是一種穩(wěn)定的排序算法。計數(shù)排序不是比較排序,排序的速度快于任何比較排序算法。 贊助我以寫出更好的文章,give me a cup of coffee? 2017最新最全前端面試題 1、插入排序 1)算法簡介 插入排序(Insertion-Sort)的算法描述是一種簡單直觀的排序算法。它...

    jerry 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<