Javascript 通过具有类型的直接路径在树中查找路径

Javascript 通过具有类型的直接路径在树中查找路径,javascript,Javascript,我尝试改进此代码: 我要这个数据: const data = [ { 'name': 'name1', 'tree': [ {'name': 'name2'}, {'type': 'type1'}, { 'name': 'name4', 'tree': [ {'name': 'nam

我尝试改进此代码:

我要这个
数据

const data = [
    {
        'name': 'name1',
        'tree': [
            {'name': 'name2'},
            {'type': 'type1'},
            {
                'name': 'name4',
                'tree': [
                    {'name': 'name5'},
                    {'type': 'type2'}
                ]
            },
            {'name': 'name7'}
        ]
    },
    {
        'name': 'name8',
        'tree': [
            {'type': 'number'}
        ]
    }
];

const types = [
    {
        'type': 'number',
        'tree': [
            {
                'name': 'number1',
                'tree': [
                    {
                      'type': 'number'
                    }
                ]
            },
            {
                'name': 'number2',
                'tree': [
                    {
                      'type': 'number'
                    }
                ]
            }
        ]
    },
    {
        'type': 'type1',
        'error': true,
        'tree': [
            {
                'name': 'name1',
                'tree': [
                    {
                      'type': 'type2'
                    }
                ]
            }
        ]        
    },
    {
        'type': 'type2',
        'tree': [
            {
                'name': 'name3',
                'end': true,
                'tree': [
                    {
                       'type': 'type3'
                    }
                ]
            },
            {
                'type': 'type3'
            }
        ]
    },
    {
        'type': 'type3',
        'end': true,
        'tree': [
            {
                'name': 'name4'
            },
            {
                'name': 'name6'
            }
         ]
    },
];
预期产出:

findPath(data, ["name1", "name1"]); // ["name1", "name1"]
findPath(data, ["name1", "name1", "name3"]); // []
findPath(data, ["name1", "name1", "name3", "name4"]); // ["name1", "name1", "name3", "name4"]
findPath(data, ["name8", "number1", "number1", "number2"]); // ["name8", "number1", "number1", "number2"]
类型可以没有数字这样的限制

但是如果有
end:true
则必须有continue,因此
name
type

我所有的努力都是徒劳的

我对另一个主题中的函数有一些问题

1)
r
是什么意思

2) 什么是
无成本=符号()是什么意思

3) q是什么意思

4)
…more
是什么意思


谢谢你的帮助或任何提示

不要这样看代码,并期望能够理解它。它写得太“聪明”了,很难理解。代码使用了一些非常独特的方法来解决这个问题。找到解决相同问题的另一个代码示例并从那里开始。如果您遇到另一个更容易理解的代码,我相信我们会非常乐意提供帮助。@Andrew我怀疑是否有其他代码可以做同样的事情。我只找到了这个。它对你来说也太难读了?
findPath(data, ["name1", "name1"]); // ["name1", "name1"]
findPath(data, ["name1", "name1", "name3"]); // []
findPath(data, ["name1", "name1", "name3", "name4"]); // ["name1", "name1", "name3", "name4"]
findPath(data, ["name8", "number1", "number1", "number2"]); // ["name8", "number1", "number1", "number2"]