欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

分享JS數(shù)組求和與求最大值的方法

 更新時(shí)間:2016年08月11日 17:03:55   投稿:daisy  
數(shù)組求和在項(xiàng)目需求中還是挺常見的,比如購物車金額統(tǒng)計(jì)、人員的前臺(tái)統(tǒng)計(jì)等等。今天小編先是給大家分享了JS數(shù)組求和的兩個(gè)方法,而后又用實(shí)例演示js數(shù)組求和,并求出數(shù)組中的最大值,一起來看看吧。

前言

面試遇到一個(gè)問題:JS數(shù)組求和函數(shù)。我第一想到的就是數(shù)組循環(huán)。然而我覺得面試官問這個(gè)問題一定不是想考這個(gè)人人皆知的方法。當(dāng)時(shí)機(jī)智的我竟然想到了遞歸函數(shù)不斷加和數(shù)組的項(xiàng),然而折騰了好久都沒調(diào)好方法,事實(shí)證明這并不是最優(yōu)解。最后面試官問我有沒有見過reduce(),真木有哇。所以回來查資料,Array.reduce()是ES5新增的新屬性,相似的還有Array.reduceRight()。

下文來總結(jié)一下數(shù)組求和的方法。

最粗暴的方法:循環(huán)獲取

通過for循環(huán)一項(xiàng)項(xiàng)地加和。看代碼:

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方法,可以寫一個(gè)數(shù)組求和的sum方法。

reduce()方法接收一個(gè)函數(shù)作為累加器,數(shù)組中的每個(gè)值(從左到右)開始縮減,最終為一個(gè)值。

reduce的語法:

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í)間,從而通過時(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)頁特效,網(wǎng)頁特效代碼,js特效,js腳本,腳本,廣告代碼,jb51.net,www.dbjr.com.cn,腳本之家網(wǎng)" />

<meta name="description" content="www.dbjr.com.cn,腳本之家網(wǎng),站長(zhǎng)必備js特效及廣告代碼。大量高質(zhì)量js特效,提供高質(zhì)量廣告代碼下載,盡在腳本之家網(wǎng)" />

</head>

<body>

<a href="http://www.dbjr.com.cn/">腳本之家網(wǎng)</a>,站長(zhǎng)必備的高質(zhì)量網(wǎng)頁特效和廣告代碼。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有所幫助哦,如果有疑問的話歡迎留言討論,小編會(huì)及時(shí)回復(fù)大家的。

相關(guān)文章

最新評(píng)論