js 自帶的 reduce() 方法


1.方法說明 , Array的reduce()把一個函數作用在這個Array[x1, x2, x3...]上,這個函數必須接收兩個參數,reduce()把結果繼續和序列的下一個元素做累積計算,其效果就是:

[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)

 

2. 使用示例:

 2.1不要使用JavaScript內置的parseInt()函數,利用map和reduce操作實現一個string2int()函數:  

'use strict';

function string2int(s){
       if(!s){
          alert('the params empty');
           return;
       }
       if(s.length===1){
          return s*1;
       }
       var arr = [];
       for(var i=0; i<s.length; i++){
           arr.push(s.substr(i, 1)*1);
       }
        return arr.reduce(function(x, y){
           return x*10 + y;
        });

}
// 測試:
if (string2int('0') === 0 && string2int('12345') === 12345 && string2int('12300') === 12300) {
    if (string2int.toString().indexOf('parseInt') !== -1) {
        alert('請勿使用parseInt()!');
    } else if (string2int.toString().indexOf('Number') !== -1) {
        alert('請勿使用Number()!');
    } else {
        alert('測試通過!');
    }
}
else {
    alert('測試失敗!');
}

 2.2 把用戶輸入的不規范的英文名字,變為首字母大寫,其他小寫的規范名字。輸入:['adam', 'LISA', 'barT'],輸出:['Adam', 'Lisa', 'Bart']

'use strict';

function normalize(arr){
   if(!arr){
       alert('the arr is empty!');
       return;
    }
    return arr.map(function(s){
      var temparr = [];
      for(var j=0; j<s.length; j++){
           var str = s.substr(j, 1);
           if(j===0){
              str = str.toUpperCase();
           }else{
              str = str.toLowerCase();
           }
           temparr.push(str);
      }
      s = temparr.reduce(function(x, y){
           return x + y;
      });
      return s;
    });
 
}

// 測試:
if (normalize(['adam', 'LISA', 'barT']).toString() === ['Adam', 'Lisa', 'Bart'].toString()) {
    alert('測試通過!');
}
else {
    alert('測試失敗!');
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM