reduce
數組的方法,有兩個參數 回調函數
callback
和
initialValue
回調有四個參數
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
},{})