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('测试失败!');
}
原文地址:https://www.cnblogs.com/rocky-fang/p/5755755.html