reduce的妙用

reduce

数组的方法,有两个参数 回调函数 callbackinitialValue
回调有四个参数 prev、next、index、arr
initialValue:可选参数,做为 callback第一次的 prev
若是传了initialValue:
prev第一次为 initialValue,以后为 return的值。
next为数组的每一项
index为数组的下标
arr为原数组
若是没传initialValue:
prev第一次为数组的第一项,以后为 return的值。
next为从数组的第二项开始的每一项
index、arr不受影响

下划线转驼峰

let str = "my_name_is_sxq";
    let result = str.split('').reduce((p,n,i,arr)=>{
        if(n=='_'){
            arr[i+1] = arr[i+1].toUpperCase()
            return p
        }
        return p + n
    })

数组扁平化

// 二维转一维
    let arr = [1,2,3,[4,5],[6,7,[8,9]]];
    let newarr = arr.reduce(function(prev,next){
        return Array.isArray(next)?prev=prev.concat(...next):prev=prev.concat(next)
    },[])

数组转对象

// 路由数组转对象
    let arr = [{path:'/',component:function(){}},{path:'/user',component:function(){}}]
    let result = arr.reduce((memo,current)=>{
        memo[current.path] = current.component
        return memo
    },{})
相关文章
相关标签/搜索