中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

JS中取二維數(shù)組中最大值的方法匯總
來源:易賢網(wǎng) 閱讀:1328 次 日期:2016-07-08 10:53:52
溫馨提示:易賢網(wǎng)小編為您整理了“JS中取二維數(shù)組中最大值的方法匯總”,方便廣大網(wǎng)友查閱!

本文通過三種解決方案給大家介紹js中取二維數(shù)組中最大值的方法。介紹的非常詳細,具有參考價值

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

問題描述

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

基本解決方案

function largestOfFour(arr) {

var results = []; // 創(chuàng)建一個results變量來存儲

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

for (var n = 0; n < arr.length; n++) {

var largestNumber = 0; // 創(chuàng)建第二個變量,存儲最大的數(shù)

// 創(chuàng)建另一個循環(huán),遍歷子數(shù)組

for (var sb = 0; sb < arr[n].length; sb++) {

//檢查子數(shù)組的元素是否大于當前存儲的最大值

if (arr[n][sb] > largestNumber) {

// 如果為真,將這個值賦予給變量largestNumber

largestNumber = arr[n][sb];

}

}

// 內部循環(huán)后,將每個子數(shù)組中的值保存到數(shù)組results中

results[n] = largestNumber;

}

// 返回數(shù)組

return results;

}

largestOfFour([[1,34],[456,2,3,44,234],[4567,1,4,5,6],[34,78,23,1]]); //[34, 456, 4567, 78]

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

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

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

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

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

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

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

最后返回 results 數(shù)組

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

Array.prototype.max = function () {

return Math.max.apply({},this);

}

largestOfFour(arr).max();

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

largestOfFour([[1,34],[456,2,3,44,234],[4567,1,4,5,6],[34,78,23,1]]).max(); // 4567

中級解決方案

function largestOfFour (arr) {

// 通過map()方法,并通過回調函數(shù),將子數(shù)組中最大值組合在一起,得到一新數(shù)組

return arr.map(function (group) {

// 通過reduce方法,把每個子數(shù)組中最大值返回到group數(shù)組中

return group.reduce(function (prev, current) {

// 如果current 大于prev,返回current,否則返回prev

return (current > prev) ? current : prev;

});

});

}

largestOfFour([[1,34],[456,2,3,44,234],[4567,1,4,5,6],[34,78,23,1]]); // [34, 456, 4567, 78]

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

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

最佳解決方案

function largestOfFour (arr) {

return arr.map(Function.apply.bind(Math.max, null));

}

largestOfFour([[1,34],[456,2,3,44,234],[4567,1,4,5,6],[34,78,23,1]]); //[34, 456, 4567, 78]

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

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

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

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

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

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

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

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

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

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

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

我們使用 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() 方法組合在一起:

function largestOfFour (arr) {

var newArray = arr.join(",").split(",");

return Math.max.apply({},newArray);

}

largestOfFour([12,23]); // =>23

largestOfFour([12,23,[1234,324],[345,566]]); // =>1234

largestOfFour([12,23,[1234,324,[23121,90890]],[345,566,[345,78,90]]]); // =>90890

largestOfFour([12,23,[1234,324,[23121,90890]],[345,566,[345,78,90,[90909090,988]]]]); // =>90909090

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

function smallerOfFour (arr) {

var newArray = arr.join(",").split(",");

return Math.min.apply({},newArray);

}

smallerOfFour([12,23]); // =>12

smallerOfFour([112,23,[1234,324],[345,566]]); // =>23

smallerOfFour([212,123,[1234,324,[23121,90890]],[345,566,[345,78,90]]]); // =>78

smallerOfFour([102,230,[1234,324,[23121,90890]],[345,566,[345,78,90,[90909090,988]]]]); // =>78

總結

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

更多信息請查看網(wǎng)絡編程
易賢網(wǎng)手機網(wǎng)站地址:JS中取二維數(shù)組中最大值的方法匯總

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網(wǎng)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
欧美精品一区二区高清在线观看| 美国三级日本三级久久99| 国产一区二区观看| 在线观看福利一区| 一本色道久久综合亚洲精品不卡| 在线一区二区视频| 欧美va天堂在线| 国产在线拍揄自揄视频不卡99| 日韩一级二级三级| 久久中文欧美| 国产日产欧产精品推荐色| 99在线观看免费视频精品观看| 久久av资源网| 国产精品日韩欧美一区| 日韩午夜三级在线| 欧美风情在线观看| 在线观看视频一区二区| 久久aⅴ国产紧身牛仔裤| 国产精品国产自产拍高清av| 日韩视频免费| 欧美激情一二三区| 亚洲片区在线| 欧美成人第一页| 红桃视频欧美| 久久先锋影音av| 黄网站免费久久| 久久久免费精品视频| 国产精品一区二区久久国产| 一区二区三区精品在线| 欧美日韩国产不卡在线看| 日韩午夜在线观看视频| 欧美刺激午夜性久久久久久久| 精品动漫一区二区| 久久久免费精品视频| 在线观看欧美黄色| 欧美成人精品一区二区三区| 亚洲第一视频网站| 欧美刺激性大交免费视频| 亚洲精品免费看| 欧美日韩成人精品| 亚洲视频欧美视频| 国产精品青草久久| 欧美一级片一区| 狠狠色噜噜狠狠狠狠色吗综合| 久久精品男女| 亚洲国产高清高潮精品美女| 欧美黄污视频| 亚洲一区二区精品| 国产一区999| 免费永久网站黄欧美| 亚洲精品乱码久久久久久久久| 欧美日韩精品免费看| 亚洲欧美日韩国产一区| 国内一区二区三区| 欧美电影在线观看完整版| 亚洲性线免费观看视频成熟| 国产日产精品一区二区三区四区的观看方式 | 国产精品日韩一区| 欧美综合国产| 亚洲激情偷拍| 国产精品视频观看| 米奇777超碰欧美日韩亚洲| 亚洲精品久久视频| 国产亚洲欧洲997久久综合| 欧美在线日韩| 亚洲欧洲中文日韩久久av乱码| 欧美日韩视频在线| 久久精品欧洲| 亚洲午夜视频在线观看| 亚洲国产成人精品视频| 国产精品一区二区三区观看| 欧美jizzhd精品欧美喷水| 亚洲欧美文学| 亚洲经典一区| 国内在线观看一区二区三区| 欧美丝袜一区二区三区| 老司机免费视频一区二区三区| 亚洲一二三区视频在线观看| 亚洲国产精品www| 国产综合在线看| 国产精品亚洲产品| 欧美日韩中国免费专区在线看| 久久精品电影| 亚洲欧美日韩另类| 亚洲午夜免费福利视频| 最新高清无码专区| 一区福利视频| 黄色精品一二区| 国产欧美一区二区三区久久人妖| 欧美激情一区二区三区成人| 久久蜜臀精品av| 久久av老司机精品网站导航| 亚洲综合不卡| 亚洲一区在线播放| 亚洲天堂成人| 亚洲一区二区三区在线观看视频 | 国产一区在线免费观看| 欧美日韩一区二区三| 欧美激情黄色片| 欧美1区免费| 欧美福利一区| 免费不卡在线观看av| 久久人人爽人人爽| 久久综合色播五月| 久久中文字幕一区二区三区| 久久久一本精品99久久精品66| 久久久久国产精品一区三寸 | 国产综合香蕉五月婷在线| 国产精品一二三四| 国产情人综合久久777777| 国产精品日韩一区二区三区| 国产精品久久7| 国产精品成人观看视频国产奇米| 欧美午夜精品久久久久久浪潮| 国产精品福利在线观看| 国产精品视频专区| 狠狠色丁香婷婷综合影院| 在线日韩视频| 夜夜夜精品看看| 亚洲欧美综合v| 久久男人av资源网站| 麻豆成人在线观看| 欧美成人午夜激情| 国产精品v亚洲精品v日韩精品| 国产精品免费区二区三区观看| 国产欧美亚洲一区| 亚洲国产精品久久久久久女王| 亚洲日本成人网| 亚洲欧美日韩一区二区在线| 久久久久久综合| 欧美日韩国产影片| 国内一区二区三区在线视频| 夜夜爽99久久国产综合精品女不卡| 亚洲淫片在线视频| 久久免费视频这里只有精品| 欧美日韩日日骚| 好吊妞这里只有精品| aa级大片欧美三级| 久久久久久久久久码影片| 欧美日韩免费观看中文| 国产一区二区三区在线观看免费| 亚洲国产精品一区二区三区| 亚洲欧美成人| 欧美国产日韩一区二区在线观看 | 欧美激情日韩| 国产欧美va欧美va香蕉在| 亚洲二区在线| 午夜精品久久久久久久久| 欧美日韩成人免费| 红杏aⅴ成人免费视频| 午夜精品一区二区三区在线| 欧美日韩国产精品| 亚洲国产导航| 久久久久久久波多野高潮日日| 国产精品成人一区| 99亚洲一区二区| 欧美成人精品| 亚洲大片av| 久久久久99| 国产色爱av资源综合区| 亚洲一区二区三区四区五区午夜| 欧美精品在线观看| 亚洲国产精品一区| 久久青青草综合| 韩日视频一区| 久久国产乱子精品免费女| 国产欧美精品日韩区二区麻豆天美 | 中文网丁香综合网| 欧美大片在线看免费观看| 激情久久久久久久| 久久精品国产99国产精品| 国产日韩欧美高清| 欧美一区二视频在线免费观看| 国产精品久久久久aaaa樱花| 亚洲午夜精品福利| 国产精品乱码一区二区三区| 亚洲私人影吧| 国产精品午夜电影| 欧美在线影院| 亚洲高清视频在线| 欧美成人在线网站| 一区二区欧美国产| 国产精品一区二区视频| 亚洲欧美一区二区精品久久久| 国产精品成人一区| 欧美亚洲一区二区在线| 国产日韩精品在线| 久久亚洲综合色| 亚洲日韩第九十九页| 欧美视频四区| 欧美一区二区三区四区高清 | 国产精品无码专区在线观看| 在线一区日本视频| 国产精品亚洲第一区在线暖暖韩国| 亚洲欧美日韩国产中文| 国产欧美日韩一区| 麻豆91精品91久久久的内涵| 一区二区高清视频| 国产日产欧美一区| 欧美大片在线观看一区|