1

サーバーからデータを取得しています。データは次のようになります。

abc/abca/abcsd/absc.dat

スラッシュの量はパスごとに異なります。

今度は PrimeNG を使ってツリービューで表示したいと思います。これは私がどれだけ離れているかです:

for (var i = 0; i < this.test.length; i++) {
                let regex = /([^\/]+)\/?/g;
                let result: RegExpExecArray;

                while ((result = regex.exec(this.test[i])) !== null) {
                    console.log(result[1]);
                    if (result[1].search(".dat")>0) {
                        let item = {
                            "label": result[1],
                            "data": "Documents Folder",
                            "icon": "fa-file-text-o"
                        }
                        this.tree.push(item)
                    }
                    else {
                        let item = {
                            "label": result[1],
                            "data": "Documents Folder",
                            "expandedIcon": "fa-folder-open",
                            "collapsedIcon": "fa-folder",
                            "children": [{
                            }]
                        }
                        this.tree.push(item)
                    }
                }
            }

「test」は前述のデータです。/ を正規表現で検索しています。「結果[1]」は、スラッシュ間の文字列を提供します。私が今できることは、それが .dat であるかどうかを確認し、ツリービュー構造が次のようなものであるツリービューにプッシュすることです(上記の例):

-abc
-abca
-abcsd
-absc.dat

ご覧のとおり、正しいフォルダー構造を表示できません。スラッシュの量を取得してハードコードし、switch case を実行して正しい順序でプッシュすることはできますが、動的な方法で int が必要です。

だから私が必要とするのは、動的な方法でこれです:

for 3 slashes:
   first item: this.items.push(item)
   sec. item : this.items[0].children.push(item)
   third. item: this.items[0].children[0].children.push(item)

for x slashes:
   ???

何か案は?

4

1 に答える 1