js 方法优化

优化以下map方法
image.png

     _eventGroup: function () {
            let buttonList = {};
            _.map(this.buttons, (item)=>{
                if(item.tag === 'button'){
                    const btnId = _.uniqueId('advantedBtn_')
                    item.attrs.btnId = btnId;
                    buttonList[btnId] = item.attrs;
                } else {
                    _.map(item.children, (i) =>{
                        if(i.tag === 'button'){
                            const btnId = _.uniqueId('advantedBtn_')
                            i.attrs.btnId = btnId;
                            buttonList[btnId] = i.attrs;
                        }
                    })
                }
            });
            return buttonList
        },
阅读 1.6k
2 个回答
function _eventGroup(data, buttonList) {
    _.map(data, (item)=>{
        if(Array.isArray(item.children)){
            _eventGroup(item.children, buttonList)
        }else if(item.tag === 'button'){
            const btnId = _.uniqueId('advantedBtn_')
            item.attrs.btnId = btnId;
            buttonList[btnId] = item.attrs;
        }
    });
    return buttonList
}

let buttonList = {}
_eventGroup(this.buttons, buttonList)
 var data = [
    {
        id: '001',
        name: 'node-1',
        children: [
            {
                id: '001002',
                name: 'node-1-2',
            },
            {
                id: '001003',
                name: 'node-1-2',
            },
            {
                id: '001004',
                name: 'node-1-2',
            },
        ]
    },
    {
        id: '002',
        name: 'node-2',
    },
    {
        id: '003',
        name: 'node-3',
    },
    {
        id: '004',
        name: 'node-4',
        children: [
            {
                id: '004001',
                name: 'node-4-1',
                children: [
                    {
                        id: '004001001',
                        name: 'node-4-1-1',
                    },
                    {
                        id: '004001002',
                        name: 'node-4-1-2',
                    }
                ]
            },
            {
                id: '004002',
                name: 'node-4-2',
            }
        ]
    },
 ]
 var buttonList = []
 function loopMap(data) {
    for (let item of data) {
        if (item.children) {
            loopMap(item.children)
        } else {
            buttonList.push(item.id)
        }
    }
 }

根据你的结构,我mock了数据格式,看是否与你的结构一致;这样能得到所有的id

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏