split()

根据传入的参数把字符串分割成一个数组,可以用正则表达式使分割更加灵活

filter()

将得到数组进行过滤,filter 传入一个函数,返回一个布尔值,根据布尔值判断是否保留这个元素

reduce((prev,cur,index,arr)=>{},init)

一个循环遍历函数,prev 的初始值为 init,后续值为上一个函数的返回值,cur 是当前数组元素的值,arr 是原数组

实现 normalize 函数
let result = {};
arr.split('/[\[\]]/g')
.filter(Boolen)
.reduce((obj,item,index,arr)=>{
    obj.value = item;
    if(index !  == arr.length-1){
        return obj.children={}
    }
},result)
return result