suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Javascript – Vier Schichten von Baumdaten werden von der Schnittstelle abgerufen, und es ist eine Methode erforderlich, um jedes Element in jeder Schicht abzugleichen.

Es mag etwas kompliziert sein, aber die Einzelheiten sind wie folgt: A-Daten werden von der Schnittstelle empfangen und die Struktur ist ungefähr so:

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

Jedes Datenelement in jeder Ebene hat eine unabhängige ID, und dann gibt es ein untergeordnetes Feld, das der zweiten Datenebene entspricht, und die zweite Datenebene hat auch ein untergeordnetes Feld, das der dritten Datenebene entspricht usw. .

Gibt es eine effizientere Möglichkeit, den entsprechenden Namen aus diesen Baumdaten über eine angegebene ID abzurufen? Auf der Suche nach einer Wrapper-Funktion

PHP中文网PHP中文网2739 Tage vor417

Antworte allen(2)Ich werde antworten

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新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 必须是唯一的

    Antwort
    0
  • 过去多啦不再A梦

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

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

    Antwort
    0
  • StornierenAntwort