js递归求有效值

//给定某个名字,求相应的值

var arrs = [];

var data = [{
    name: '中国',
    val: 100,
    children: [{
            name: '教第三节课',
            value: 0
        },
        {
            name: '教呼呼',
            value: 1,
            children: [{
                name: '大一',
                value: 2,
                children: [{
                        name: '课程1',
                        value: 3,
                        children: [{
                                name: '1231',
                                value: 4,
                            },
                            {
                                name: '121',
                                value: 5,
                            }
                        ]
                    },
                    {
                        name: '课程2',
                        value: 6,
                        children: [{
                                name: '1232',
                                value: 7,
                            },
                            {
                                name: '122',
                                value: 9,
                            }
                        ]
                    },
                    {
                        name: '课程3',
                        value: 101,
                        children: [{
                                name: '1233',
                                value: 8,
                            },
                            {
                                name: '123',
                                value: 10,
                            }
                        ]
                    },

                ]
            }]
        },
        {
            name: '活动',
            value: 11,
            children: null
        }
    ]
}];

function getArray(data, name) {
    var val = null
    for (var i = 0; i < data.length; i++) {
        if (data[i].name == name) {
            val = data[i].val
            return val
        } else {
            getArray(data[i].children, name)
        }
    }
}
console.log(getArray(data, '活动'));
阅读 2.7k
4 个回答

问题里data这种数据结构很常见;
常见方法:指定name找value

traversingArrayToFindValueByName(data, name);

function traversingArrayToFindValueByName (array, name) {
        // 递归调用自身
        for(let item of array){
            if(item.name == name){
                return item;
            }

            let result = traversingArrayToFindValueByName(item.children || [], name);

            if(result){
                return result;
            }
        }
    }

如果要根据value找name就把func中的name value互换就好了

数据套了那么多层,for循环也要多套几层

这里要使用递归,数组的深度不确定。

简单处理了下,你看看是不是

clipboard.png

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