js获取数组前n项的和
生活随笔
收集整理的這篇文章主要介紹了
js获取数组前n项的和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用的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項要做特殊處理,如果第一項不能轉換成數字將其視為0var 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));
總結
以上是生活随笔為你收集整理的js获取数组前n项的和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苦了我一年的选择,现在却是我最回味的时光
- 下一篇: YAML_11 when条件判断