zoukankan      html  css  js  c++  java
  • 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('测试失败!');
    }
  • 相关阅读:
    2019-1-7 水晶报表
    2018-12-25工作记录 空白行===水晶报表
    2018-7-26-随笔-泛型
    2018-7-20-随笔-转换
    2018-7-18-随笔-接口
    2018-7-17-随笔-params和ref、out用法、事件访问器
    VPS安装metasploit-framework
    Mimiktaz抓取本机密码
    msfvenom生成各类Payload命令
    docker容器开启ssh远程登录
  • 原文地址:https://www.cnblogs.com/rocky-fang/p/5755755.html
Copyright © 2011-2022 走看看