最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

JS中取二維數(shù)組中最大值的方法匯總_javascript技巧

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 20:53:31
文檔

JS中取二維數(shù)組中最大值的方法匯總_javascript技巧

JS中取二維數(shù)組中最大值的方法匯總_javascript技巧:在JavaScript中可以通過內(nèi)置的 Math.max() 的最大值,但是要從多重數(shù)組中取出最大值,還是有一定的難度。 問題描述 假設(shè)你有一個數(shù)組,而且這個數(shù)組中包含了數(shù)字的子數(shù)組,而我們要做的是從數(shù)組中的每個子數(shù)組中返回其最大的那個最大數(shù)。 基本解決方案
推薦度:
導(dǎo)讀JS中取二維數(shù)組中最大值的方法匯總_javascript技巧:在JavaScript中可以通過內(nèi)置的 Math.max() 的最大值,但是要從多重數(shù)組中取出最大值,還是有一定的難度。 問題描述 假設(shè)你有一個數(shù)組,而且這個數(shù)組中包含了數(shù)字的子數(shù)組,而我們要做的是從數(shù)組中的每個子數(shù)組中返回其最大的那個最大數(shù)。 基本解決方案

在JavaScript中可以通過內(nèi)置的 Math.max() 的最大值,但是要從多重數(shù)組中取出最大值,還是有一定的難度。

問題描述

假設(shè)你有一個數(shù)組,而且這個數(shù)組中包含了數(shù)字的子數(shù)組,而我們要做的是從數(shù)組中的每個子數(shù)組中返回其最大的那個最大數(shù)。

基本解決方案

上面的方法是一個普通的解決方案,通過兩個 for 循環(huán)對數(shù)組及其子數(shù)組做遍歷:

創(chuàng)建一個 results 變量用來存儲每個子數(shù)組中遍歷出來的最大值

創(chuàng)建外循環(huán) for 遍歷外層數(shù)組

創(chuàng)建第二個變量 largestNumber 用來存放最大值。這個變量值必須放在內(nèi)部 for 循環(huán)的外面,因為這樣他才不會被重新分配

創(chuàng)建第二個 for 循環(huán),來遍歷子數(shù)組中的每個元素

通過一個 if 語句來判斷當(dāng)前子數(shù)組的元素是否大于當(dāng)前存儲的最大值 largestNumber 。如果是( true ),將這個最大值存儲給 largestNumber 。

內(nèi)部循環(huán)結(jié)束后,將每個子數(shù)組中的最大值存儲到最初聲明的變量 results 中

最后返回 results 數(shù)組

取出所有子數(shù)組中的每個最大值之后,得到一個新數(shù)組 results ,這個時候只需要通:

就可以得到其中的最大值。

中級解決方案

在外層數(shù)組中使用 Array.prototype.map() 方法遍歷數(shù)組。使用 map() 方法遍歷數(shù)組,會調(diào)用一個回調(diào)函數(shù),在這個回調(diào)函數(shù)中,使用 reduce() 方法對每個子數(shù)組 group 進行合并,將值返回到一個新數(shù)組中。而在使用 reduce() 方法時,同樣會調(diào)用一個回調(diào)函數(shù),這個回調(diào)函數(shù)只做了一件事情,就是子數(shù)組中的元素做為比較,如果 current 大于 prev ,將會返回 current ,否則返回 prev ,最終得到每個子數(shù)組中最大值。

和前面一樣,通過 Math.max.apply() 最終得到最大值。

最佳解決方案

這個方案,使用 Function.bind 方法創(chuàng)建一個特殊的回調(diào)函數(shù),就類似于 Math.max 方法一樣,但其有一個 Function.prototype.apply 功能,將數(shù)組作為它的參數(shù)。

先對主數(shù)組中的每個元素做遍歷,也就是數(shù)組內(nèi)部的每個子數(shù)組

使用 map() 方法需要一個回調(diào)函數(shù),用來找出內(nèi)部每個數(shù)組中的最大值。需要創(chuàng)建一個函數(shù),讓 Math.max 能接受輸入的數(shù)組工作。換句話說,這是非常簡單而且這樣工作也非常的好,如 Math.max([9,43,20,6]); 將會返回最大值 43

Function.prototype.apply 方法工作可以接受數(shù)組做為參數(shù),但函數(shù)通過調(diào)用上下文,這事情就有點復(fù)雜。例如 Math.max.apply(null,[9,43,20,6]) 將調(diào)用一個 Max.max 方法,但這樣的方法找起來不容易。

這里給 Function.prototype.apply 方法傳遞了一個 null 參數(shù),告訴 Math.max 不需要任何上下文。

因為 arr.map() 需要一個回調(diào)函數(shù),而不只是一個表達(dá)式,我們在 Function.bind 方法中提供了一個函數(shù)

因為 Function.prototype.apply 是一個靜態(tài)方法,類似一個函數(shù)對象,我們可以稱之為 Function.prototype.apply 上綁定了一個 Function.prototype.bind 。例如: Function.apply.bind

現(xiàn)在可以通過 Function.prototype.apply.bind 回調(diào)函數(shù)指定其上下文,比如在這個示例中的 Math.max 方法

由于是嵌入到 Function.prototype.apply 方法,需要一個上下文作為第一個參數(shù),而且這個上下文還是一個虛假的。

所以我們將 null 作為第二個參數(shù)傳遞給 Function.prototype.apply.bind ,并且綁定一個上下文,這個上下文就是 Math.max 方法

由于 Math.max 是獨立于任何上下文的,所以它會忽略 Function.prototype.apply 方法調(diào)用的虛假上下文

我們使用 Function.prototype.apply.bind(Math.max,null) 讓一個新函數(shù)接受 arr.map 值,比如數(shù)組中的子數(shù)組

多維數(shù)組中取最大值

上文使用不同的方法實現(xiàn)了從二維數(shù)組中取出子數(shù)組中最大值,并且將這些最大值重新組成一個新數(shù)組,如果延伸一下,取出里面的最大值時,還需要使用 Array.prototype.max 函數(shù),函數(shù)中通過 Math.max.apply({},this) 取得最大值。不過如果不是二維數(shù)組,那上述方法將無法取出數(shù)組中最大的值。

而在多維數(shù)組中取最大值,可以通過 join() 和 split() 方法組合在一起:

同樣可以使用類似的方法取出多維數(shù)組中的最小值:

總結(jié)

在《 JavaScript學(xué)習(xí)筆記:取數(shù)組中最大值和最小值 》一文中介紹了使用 Math.max.apply({},arr) 來取數(shù)組中最大的數(shù)字。這篇文章中從不同的角度的介紹了如何在二維數(shù)組中取出最大的數(shù),但很多時候,數(shù)組還有多維數(shù)組,文章最后介紹了如何實現(xiàn)多維數(shù)組中取出最大值。如果您有更多的方案,歡迎在評論中與我們一起分享。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

JS中取二維數(shù)組中最大值的方法匯總_javascript技巧

JS中取二維數(shù)組中最大值的方法匯總_javascript技巧:在JavaScript中可以通過內(nèi)置的 Math.max() 的最大值,但是要從多重數(shù)組中取出最大值,還是有一定的難度。 問題描述 假設(shè)你有一個數(shù)組,而且這個數(shù)組中包含了數(shù)字的子數(shù)組,而我們要做的是從數(shù)組中的每個子數(shù)組中返回其最大的那個最大數(shù)。 基本解決方案
推薦度:
標(biāo)簽: 方法 javascript 最大值
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top