分享JS數(shù)組求和與求最大值的方法
前言
面試遇到一個(gè)問(wèn)題:JS數(shù)組求和函數(shù)。我第一想到的就是數(shù)組循環(huán)。然而我覺(jué)得面試官問(wèn)這個(gè)問(wèn)題一定不是想考這個(gè)人人皆知的方法。當(dāng)時(shí)機(jī)智的我竟然想到了遞歸函數(shù)不斷加和數(shù)組的項(xiàng),然而折騰了好久都沒(méi)調(diào)好方法,事實(shí)證明這并不是最優(yōu)解。最后面試官問(wèn)我有沒(méi)有見(jiàn)過(guò)reduce(),真木有哇。所以回來(lái)查資料,Array.reduce()是ES5新增的新屬性,相似的還有Array.reduceRight()。
下文來(lái)總結(jié)一下數(shù)組求和的方法。
最粗暴的方法:循環(huán)獲取
通過(guò)for循環(huán)一項(xiàng)項(xiàng)地加和??创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方法,可以寫(xiě)一個(gè)數(shù)組求和的sum方法。
reduce()方法接收一個(gè)函數(shù)作為累加器,數(shù)組中的每個(gè)值(從左到右)開(kāi)始縮減,最終為一個(gè)值。
reduce的語(yǔ)法:
array.reduce(callback[, initialValue]);
callback函數(shù)接受4個(gè)參數(shù):previousValue(上次調(diào)用回調(diào)返回的值)、currentValue(當(dāng)前被處理的元素)、index(索引)以及數(shù)組本身(第一次調(diào)用 callback的第一個(gè)參數(shù)),執(zhí)行數(shù)組中每個(gè)值的函數(shù)。
initialValue參數(shù)可選,表示初始值;initialValue參數(shù)若指定,則當(dāng)作最初使用的previous值,如果缺省,則使用數(shù)組的第一個(gè)元素作為previous初始值,同時(shí)current往后排一位。
Array.prototype.sum = function (){
return this.reduce(function (partial, value){
return partial + value;
})
};
[1,4,7,2,10].sum(); // 24
相比第一種方法,使用reduce()方法的效率更高。
這兩種方法的效率比較可以直接在函數(shù)運(yùn)行前后分別調(diào)用new Date()獲取即時(shí)時(shí)間,從而通過(guò)時(shí)間差比較執(zhí)行時(shí)間。這里就不比較了,因?yàn)槊總€(gè)人的執(zhí)行環(huán)境差異較大。測(cè)試結(jié)果是reduce()方法的執(zhí)行時(shí)間更短。
JS數(shù)組求和函數(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="站長(zhǎng),網(wǎng)頁(yè)特效,網(wǎng)頁(yè)特效代碼,js特效,js腳本,腳本,廣告代碼,jb51.net,www.fzitv.net,腳本之家網(wǎng)" />
<meta name="description" content="www.fzitv.net,腳本之家網(wǎng),站長(zhǎng)必備js特效及廣告代碼。大量高質(zhì)量js特效,提供高質(zhì)量廣告代碼下載,盡在腳本之家網(wǎng)" />
</head>
<body>
<a href="http://www.fzitv.net/">腳本之家網(wǎng)</a>,站長(zhǎng)必備的高質(zhì)量網(wǎng)頁(yè)特效和廣告代碼。jb51.net,站長(zhǎng)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;
};
//應(yīng)用
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>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家使用JavaScript有所幫助哦,如果有疑問(wèn)的話歡迎留言討論,小編會(huì)及時(shí)回復(fù)大家的。
- Javascript獲取數(shù)組中的最大值和最小值的方法匯總
- JS獲取數(shù)組最大值、最小值及長(zhǎng)度的方法
- 求js數(shù)組的最大值和最小值的四種方法
- javascript實(shí)現(xiàn)查找數(shù)組中最大值方法匯總
- JS實(shí)現(xiàn)獲取數(shù)組中最大值或最小值功能示例
- JS中取二維數(shù)組中最大值的方法匯總
- JavaScript遍歷查找數(shù)組中最大值與最小值的方法示例
- JavaScript如何獲取數(shù)組最大值和最小值
- javascript實(shí)現(xiàn)數(shù)組最大值和最小值的6種方法
- js求數(shù)組最大值的八種具體實(shí)現(xiàn)方法
相關(guān)文章
javaScript中push函數(shù)用法實(shí)例分析
這篇文章主要介紹了javaScript中push函數(shù)用法,較為詳細(xì)的分析了javascript中push函數(shù)的功能、定義及使用技巧,需要的朋友可以參考下2015-06-06
javascript動(dòng)態(tài)創(chuàng)建對(duì)象的屬性詳解
在本篇文章中我們給大家分享了關(guān)于javascript動(dòng)態(tài)創(chuàng)建對(duì)象的屬性的相關(guān)知識(shí)點(diǎn)以及代碼分享,需要的朋友們參考學(xué)習(xí)下。2018-11-11
javascript 的變量、作用域和內(nèi)存問(wèn)題
這篇文章主要介紹了javascript 的變量、作用域和內(nèi)存問(wèn)題的相關(guān)資料,需要的朋友可以參考下2017-04-04
一個(gè)不錯(cuò)的字符串轉(zhuǎn)碼解碼函數(shù)(自寫(xiě))
一個(gè)不錯(cuò)的字符串轉(zhuǎn)碼解碼函數(shù),自己寫(xiě)的,有需要的朋友可以參考下2014-07-07
javascript將浮點(diǎn)數(shù)轉(zhuǎn)換成整數(shù)的三個(gè)方法
將浮點(diǎn)數(shù)轉(zhuǎn)換成整數(shù)方法有很多,本例為大家介紹常用的三個(gè)方法,如果讀者想到其他好用方法,也可以交流一下2014-06-06
JavaScript實(shí)現(xiàn)的微信二維碼圖片生成器的示例
二維碼分享功能大多是由后端實(shí)現(xiàn)的,對(duì)服務(wù)器的負(fù)載較重,這里有一個(gè)前端實(shí)現(xiàn)的版本,本文介紹了JavaScript實(shí)現(xiàn)的微信二維碼圖片生成器的示例,有需要的可以了解一下。2016-10-10
JS+cookie實(shí)現(xiàn)購(gòu)物評(píng)價(jià)五星好評(píng)功能
這篇文章主要為大家詳細(xì)介紹了JS+cookie實(shí)現(xiàn)購(gòu)物評(píng)價(jià)五星好評(píng)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09
原生JavaScript實(shí)現(xiàn)貪吃蛇游戲
這篇文章主要為大家詳細(xì)介紹了原生JavaScript實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11
微信小程序時(shí)間標(biāo)簽和時(shí)間范圍的聯(lián)動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了微信小程序時(shí)間標(biāo)簽和時(shí)間范圍的聯(lián)動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02

