搜索

首页  >  问答  >  正文

javascript - 从接口获取到四层树状数据,需要一个方法来匹配其中任一层的任一条。

可能比较绕,具体是这样的,从接口收到了一个数据,结构大概是这样:

[
    {
        id: '1',
        name: '',
        child: [
            {id: '5',
                name: 'aaa',
                child: [
                    {
                        id: '1',
                        name: 'aaa',
                        child: [
                            {
                                id: '1',
                                name: 'aaa',
                                child: [
                                    
                                ]
                            }
                        ]
                    }
                ]
            }
        ]    
    },
    {
        id: '2',
        name: '',
        child: [
            
        ]
    }
]

每一层的每一条数据都有独立id,然后有child字段对应第二层数据,第二层数据也有child字段对应第三层数据等等……

请问有没有高效一点的方法,通过一个指定id,从这个树状数据中取得相对应的name?求个封装函数

PHP中文网PHP中文网2770 天前438

全部回复(2)我来回复

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-19 10:13:14

    根据你要求和提供的数据样本,写了个demo,不知道符不符合你的要求。通过一个指定id,返回当前对象

        var data = 你的数据样本;
        var Result;
        function demo( data, id ) {
            for (var i = 0; i < data.length; i++) {
                if ( data[ i ].id == id ) {
                    Result = data[ i ];
                    break;
                }else if ( data[ i ].child.length && !Result ) {
                    demo( data[ i ].child, id );
                };
            };
            return Result;
        }
        console.log(demo( data, 3 ));

    运行结果
    注:demo( data, id ) 中的 id 必须是唯一的

    回复
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-19 10:13:14

    正道: 递归;
    歪道: 对象 JSON.Stringify 以后,用正则匹配 "id":"xx" 后,获取第一个 "name:" 和 ","之间的字符串

    回复
    0
  • 取消回复