首页 > 解决方案 > 如何获取树结构每个节点的值

问题描述

嵌套数组和对象的数组,每个节点都有唯一的值,在这个数据上找一个值,如何获取每个节点上的值?</p>

const opts = [
    {
        value: '01',
        children: [
            { value: '0198' },
            { value: '0195', children: [{ value: '09977' }] }
        ]
    },
    {
        value: '02',
        children: [
            { value: '01986' },
            {
                value: '0195',
                children: [
                    { value: '09978', children: [{ value: '09864' }, { value: '90876' }] }
                ]
            }
        ]
    }
];

const code = '90876';
// expected get an array ['02','0195','09978','90876']

标签: javascriptalgorithm

解决方案


U 可以使用函数递归遍历对象结构,如下所述

const opts = [
    {
        value: '01',
        children: [
            { value: '0198' },
            { value: '0195', children: [{ value: '09977' }] }
        ]
    },
    {
        value: '02',
        children: [
            { value: '01986' },
            {
                value: '0195',
                children: [
                    { value: '09978', children: [{ value: '09864' }, { value: '90876' }] }
                ]
            }
        ]
    }
];


function eachRecursive(obj, cb) {
    for (var k in obj) {
        if (typeof obj[k] == "object" && obj[k] !== null)
            eachRecursive(obj[k], cb);
        else
            cb(obj[k]);
    }
}

let results = [];

eachRecursive(opts, val => results.push(val));
console.log(results);

但不确定你的评论是什么意思:// expected get an array ['02','0195','0997','90876']你能解释一下你为什么这么期待吗?


推荐阅读