day3

作者: DCbryant | 来源:发表于2017-09-01 22:50 被阅读10次

    实现一个reduce函数,作用和原生的reduce类似。

    var reduce = function(arr, fn, initialValue) {
        // 设置了初始值就取初始值,否则就取数组第一个元素
        var result = typeof initialValue === 'undefined' ? arr[0] : initialValue;
        // 设置了初始值,初始值就是第一个索引,否则数组第一个元素为第一个索引
        var startPoint = typeof initialValue === 'undefined' ? 1 : 0;
        arr.slice(startPoint)
            .forEach(function(val, index) {
                result = fn(result, val, index + startPoint, arr);
            });
        return result;
    };
    var sum = reduce([1, 2, 3], function(memo, num){
         return memo + num
        }, 0);
    
    console.log(sum) //6
    
    function reduce(arr, iteratee, initValue){
      var tmpArr = (initValue === undefined ? [] : [initValue]).concat(arr)
      while(tmpArr.length > 1){
        tmpArr.splice(0, 2, iteratee(tmpArr[0], tmpArr[1]))
      }
      return tmpArr[0]
    }
    
    var sum = reduce([3,5], function(v1, v2){
      return v1 * v2
    },4)
    console.log(sum)
    

    相关文章

      网友评论

          本文标题:day3

          本文链接:https://www.haomeiwen.com/subject/scqljxtx.html