分享JS數(shù)組求和與求最大值的方法
前言
面試遇到一個問題:JS數(shù)組求和函數(shù)。我第一想到的就是數(shù)組循環(huán)。然而我覺得面試官問這個問題一定不是想考這個人人皆知的方法。當時機智的我竟然想到了遞歸函數(shù)不斷加和數(shù)組的項,然而折騰了好久都沒調好方法,事實證明這并不是最優(yōu)解。最后面試官問我有沒有見過reduce()
,真木有哇。所以回來查資料,Array.reduce()
是ES5新增的新屬性,相似的還有Array.reduceRight()。
下文來總結一下數(shù)組求和的方法。
最粗暴的方法:循環(huán)獲取
通過for循環(huán)一項項地加和??创a:
Array.prototype.sum = function (){ var result = 0; for(var i = 0; i < this.length; i++) { result += this[i]; } return result; }; [1,4,7,2,10].sum(); // 24
使用reduce方法
利用reduce
方法,可以寫一個數(shù)組求和的sum
方法。
reduce()
方法接收一個函數(shù)作為累加器,數(shù)組中的每個值(從左到右)開始縮減,最終為一個值。
reduce的語法:
array.reduce(callback[, initialValue]);
callback
函數(shù)接受4個參數(shù):previousValue
(上次調用回調返回的值)、currentValue
(當前被處理的元素)、index
(索引)以及數(shù)組本身(第一次調用 callback
的第一個參數(shù)),執(zhí)行數(shù)組中每個值的函數(shù)。
initialValue
參數(shù)可選,表示初始值;initialValue
參數(shù)若指定,則當作最初使用的previous
值,如果缺省,則使用數(shù)組的第一個元素作為previous
初始值,同時current
往后排一位。
Array.prototype.sum = function (){ return this.reduce(function (partial, value){ return partial + value; }) }; [1,4,7,2,10].sum(); // 24
相比第一種方法,使用reduce()
方法的效率更高。
這兩種方法的效率比較可以直接在函數(shù)運行前后分別調用new Date()
獲取即時時間,從而通過時間差比較執(zhí)行時間。這里就不比較了,因為每個人的執(zhí)行環(huán)境差異較大。測試結果是reduce()
方法的執(zhí)行時間更短。
JS數(shù)組求和函數(shù),并求出數(shù)組中的最大值
實例代碼
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>腳本之家_js數(shù)組求和和最大值方法_腳本之家網(wǎng)</title> <meta name="keywords" content="站長,網(wǎng)頁特效,網(wǎng)頁特效代碼,js特效,js腳本,腳本,廣告代碼,jb51.net,chabaoo.cn,腳本之家網(wǎng)" /> <meta name="description" content="chabaoo.cn,腳本之家網(wǎng),站長必備js特效及廣告代碼。大量高質量js特效,提供高質量廣告代碼下載,盡在腳本之家網(wǎng)" /> </head> <body> <a href="http://chabaoo.cn/">腳本之家網(wǎng)</a>,站長必備的高質量網(wǎng)頁特效和廣告代碼。jb51.net,站長js特效。<hr> <script type="text/javascript"> //求和 Array.prototype.sum = function () { for (var sum = i = 0; i < this.length; i++)sum += parseInt(this[i]); return sum ; }; //求最大值 Array.prototype.maxima = function () { for (var i = 0, maxValue = Number.MIN_VALUE; i < this.length; i++)parseInt(this[i]) > maxValue && (maxValue = this[i]); return maxValue; }; //應用 var arr = [1,21,3,4,22,45,60,7,32]; alert(arr.join("+") + "=" + arr.sum()); alert(arr.join("|") + "中, 最大的數(shù)是:" + arr.maxima()); </script> </body> </html>
以上就是本文的全部內(nèi)容,希望對大家使用JavaScript有所幫助哦,如果有疑問的話歡迎留言討論,小編會及時回復大家的。
相關文章
原生javascript制作的拼圖游戲實現(xiàn)方法詳解
這篇文章主要介紹了原生javascript制作的拼圖游戲實現(xiàn)方法,結合實例形式詳細分析了JavaScript制作拼圖游戲的相關步驟、原理、實現(xiàn)方法及相關操作注意事項,需要的朋友可以參考下2020-02-02AJAX XMLHttpRequest對象創(chuàng)建使用詳解
這篇文章主要介紹了AJAX XMLHttpRequest對象創(chuàng)建使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08JavaScript操作XML實例代碼(獲取新聞標題并分頁,并分頁)
XML 代碼部分 這是一個新聞的XML 文件,如果 NBody部分包含 XML 和Html 不可識別部分, 就 包含在DATA 表示附中。2010-05-05微信小程序學習(4)-系統(tǒng)配置app.json詳解
我們使用app.json文件來對微信小程序進行全局配置,決定頁面文件的路徑、窗口表現(xiàn)、設置網(wǎng)絡超時時間、設置多 tab 等。2017-01-01