サーバーからデータを取得しています。データは次のようになります。
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:
???
何か案は?