js獲取陣列前n項的和
阿新 • • 發佈:2019-01-02
使用的API
js獲取數字陣列前n項和方法,用js自帶的API Array.prototype.reduce方法。都可直接直接複製程式碼到console視窗下執行
簡單例子
var array = [0,1,2,3,4,5];
var front3Total = array.reduce(function(pre,cur,index,arr){
if(index>3-1){
return pre+0;
}
return pre+cur;
});
front3Total;
自己進行封裝
簡單封裝下,把這方法擴充套件到陣列API中去,也就是Array.prototype中去var array = [0,1,2,3,4,5]; Array.prototype.getNumArrayTotal = function(num){ var total = this.reduce(function(pre,cur,index,arr){ if(index>num-1){ return pre+0; } return pre+cur; }); return total; }; console.log(array.getNumArrayTotal());//不傳引數,計算陣列項所有和 console.log(array.getNumArrayTotal(100));//超過陣列長度也是所有項之和 console.log(array.getNumArrayTotal(-1));//負數、0、1都是第一項的值,pre預設為第一項的值. console.log(array.getNumArrayTotal(0)); console.log(array.getNumArrayTotal(1)); console.log(array.getNumArrayTotal(2));
繼續擴充套件
如何還想繼續擴充套件的話,比如普通陣列,裡面含有數字字串、boolean型別、數字、或者其他的,大家可以定義自己的規則再進行擴充套件。我這裡在擴充套件下,如果陣列項為數字字串、boolean 將其轉換成數字 然後在求和,其他型別不做求和。主要是型別的判斷和陣列第0項的處理.var array1 = ["1",true,false,"2","asdf"] Array.prototype.getNumArrayTotal1 = function(num){ var total = this.reduce(function(pre,cur,index,arr){ var cur = Number(cur); if(index==1){//第0項要做特殊處理,如果第一項不能轉換成數字將其視為0 var pre = Number(pre); if(isNaN(pre)){ pre = 0; } if(index>num-1){ return pre+0; } return pre+cur; } if(isNaN(cur)){//非數字不加當前項的值 return pre; }else{//可以轉換數字 if(index>num-1){ return pre+0; } return pre+cur; } }); return total; }; console.log(array1.getNumArrayTotal1());//不傳引數,計算陣列項所有和 console.log(array1.getNumArrayTotal1(100));//超過陣列長度也是所有項之和 console.log(array1.getNumArrayTotal1(-1));//負數、0、1都是第一項的值 console.log(array1.getNumArrayTotal1(0)); console.log(array1.getNumArrayTotal1(1)); console.log(array1.getNumArrayTotal1(2));