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
    },{})
相關文章
相關標籤/搜索