重构map重构filter重构Some重构reduce方法重构flat函数

Posted 勇敢*牛牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重构map重构filter重构Some重构reduce方法重构flat函数相关的知识,希望对你有一定的参考价值。

重构map

var arr = [1,3,4,5,5];
Array.prototype.myMap = function(callback,item)
    var arr = [];
    for(var i=0;i<this.length;i++)
        var temp = callback(this[i],i,this);
        arr.push(temp);
    
    return arr;


arr = arr.myMap(function(item,index)
    return item*2
)
console.log(arr);//[2, 6, 8, 10, 10]
</script>

重构filter

Array.prototype.myFilter = function(callback)
    var arr = [];
    for(var i=0;i<this.length;i++)
        if(callback(this[i],i,this))
            arr.push(this[i]);
        
    
    return arr

arr = arr.myFilter(function(item)
    return item > 3
)

console.log(arr);//[4, 5, 5]

重构Some

Array.prototype.mySome = function(callback)
    var arr = [];
    for(var i=0;i<this.length;i++)
        if(callback(this[i]))
            return true;
        
    
    return false

arr = arr.mySome(function(item)
    return item > 7
)

重构reduce方法

Array.prototype.myReduce = function(callback,init)
    var start = init ?? 1;
    init = init ?? this[0];
    for(var i=start;i<this.length;i++)
        var init =  callback(init,this[i])
    
    return init;


var sulter = arr.myReduce(function(v,t)
    return v+t;
)

重构flat函数

Array.prototype.myFlat = function(depth = 1)
    if(depth == 0) return this;
    console.log('this=',this);
    return  this.reduce((v,t)=>
        if(Array.isArray(t))
            return [...v,...t.myFlat(depth-1)]
        else
            return [...v,t]
        
    ,[])
    

arr= [1,2,3,3,[36,9,9,[0]]]
arr = arr.myFlat()
console.log(arr);//[1, 2, 3, 3, 36, 9, 9, Array(1)]

以上是关于重构map重构filter重构Some重构reduce方法重构flat函数的主要内容,如果未能解决你的问题,请参考以下文章

Struts2 Servelet重构

重构嵌套回调、node.js、异步

Action过滤器重构

我的重构----项目案例1

重构与动态为angularjs栏位赋值或获取值

JFrame(用C++11特性重构系列——DllParser的实现)