JSFiddle - React, Tailwind, and code Playground

by caoshengxiang

JavaScript

let list = [
        {
            name: 'test1',
            type: 'folder',
            children:[
                {
                    name: 'test2',
                    type: 'file'
                }, {
                    name: 'test3',
                    type: 'folder',
                    children:[
                        {
                            name: 'test1',
                            type: 'file'
                        }
                    ]
                },
            ]
        },{
            name: 'test1',
            type: 'folder',
            children:[
                {
                    name: 'test2',
                    type: 'file'
                }, {
                    name: 'test3',
                    type: 'folder',
                    children:[
                        {
                            name: 'test1',
                            type: 'file'
                        }
                    ]
                },
            ]
        }
    ];
    const search = (name, list) => {
        // write your code
        let temp = [];
        function search2(na, obj) {
            if (typeof obj.children === 'object' && obj.children.length) {
                obj.children.forEach(item2 => {
                    search2(na, item2)
                })
            }
            if ( obj.name === na) {
                temp.push(obj)
                // console.log('child', temp)
            }
        }
        list.forEach((item) => {
            search2(name, item)
        })
        return temp
    }
    console.log(search('test1', list))